1.RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
2.不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。
3.error,就不在这里赘述了。
try-catch用在这里作用就是代码运行过程中,不会直接在界面产生令人恐慌的错误,因为catch后已经给出产生错误后要输出的结果。但是bug依旧存在。
=====================================================
JAVA运行当中有错时:
不可搞的叫ERROR
可以搞的异常叫exception,又分两类:
可以搞的定的叫checked exception
搞不定(编程错误引起等)的或者不想搞的叫runtime exception
当异常搞不定时,定位为checked exception也没有用,无法处理,只能一级往上抛,所以定义为runtime exception
runtime exception最好不要 catch,因为catch到了也没有用,或者是编程错误引起,反而隐藏错误
捕获异常时,最好不要用异常总管exception,那就捕获了所有,包括运行时异常,而这类基本上是搞不定的或编程错误。。。
============================================
Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime Exception),
另外一种则是受控制的Exception (Checked Exception)。所有的Checked Exception 均从java.lang.Exception 继承而来,而Runtime Exception 则继承java.lang.RuntimeException 或java.lang.Error (实际上java.lang.RuntimeException 的上一层也是java.lang.Exception)。
Checked Exception 中,并不表示这段程序码一定会收到CException,但它的用意在于提醒呼叫者,执行这个method 可能产生的意外,而使用者也必须要能针对这个意外做出相对应的处理方式。
程序在执行的时候,也不见得会真的产生NullPointerException ,这种Exception 叫做runtime exception 也有人称为unchecked exception ,产生Runtime Exception 的method (在这个范例中是method2) 并不需要在宣告method 的时候定义它将会产生哪一种Exception
一般而言,Checked Exception 表示这个Exception 必须要被处理,也就是说程序设计者应该已经知道可能会收到某个Exception(因为要try catch住) ,所以程序设计者应该能针对这些不同的Checked Exception 做出不同的处理。
而Runtime Exception 通常会暗示着程序上的错误,这种错误会导致程序设计者无法处理,而造成程序无法继续执行下去。