本帖最后由 Yuan先生 于 2013-9-11 17:27 编辑
java中所有异常或者错误都继承Throwable:
1.Error:所有都继承自Error,表示致命的错误,比如内存不够,字节码不合法等。
2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。
3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error, 这个表示系统异常,比较严重。
java中异常分两类,一类是需要处理的(Checked exceptions), 一类是不需要处理的(Unchecked exceptions)。
是否需要处理是指:你程序中抛出的异常客户端是否需要处理,是否有能力处理。
如果一方法有可能引发Exception子类对象表示的异常,那就应该在此方法中捕获处理这些异常或抛弃这些异常。如IOException类和FileNotFoundException类的异常。
但是,RuntimeException类的子类表示的异常是无需这样做的,而我们遇到的很多异常都是RuntimeException类的子类表示的异常。 RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。
|