Java中用2种方法处理异常:
1.在发生异常的地方直接处理;
加上 try{} catch , 还可以在加上 finally
2.将异常抛给调用者,让调用者处理。
可以使用try{} catch,在catch里throw
也可以直接将函数声明 上 throws, 比如
void openFile(String name) throws FileNotFoundException{
....
}

Java异常可分为3种:
1. 运行时异常runtime exception: Java.lang.RuntimeException
如果不处理,编译不会出错,但是万一出错就crash, 比如数组越界,NullPointerException
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

2. 编译时异常checked exception:Java.lang.Exception
Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
比如你在处理文件流时的I/O问题,就属于编译时异常。
3. 错误:Java.lang.Error

Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;
Java.lang.RuntimeException继承自Java.lang.Exception.

标签: none

添加新评论