异常处理
异常可以分为受检异常 和运行时异常 。
-
受检异常在编译时会被检测到,所以,程序必须处理这些异常。
-
对于运行时异常编译时虽然无法被检测到,但是一个好的程序也必须处理这些异常。
处理异常的方式有两种:捕捉异常方式和转移异常方式。
捕捉异常方式是通过try - catch - finally 结构 处理异常。其格式如下:
try
{
可能会产生异常的语句序列
} catch (Exception1 e1) {
语句序列
} catch (Exception2 e2) {
语句序列
} … catch (Exception3 e3){
语句序列
} finally {
语句序列
}
在try -catch -finally 结论中,finally 一般总是会被执行,不管有没有异常产生。即使在try 语句块或catch 语句块包含return 语句,finally 语句会也会被执行到。在try -catch -finally 结构中,如果执行到在try 语句块活catch 语句块中的return 语句,则先运行finally 语句块,再运行该return 语句。如果执行到try 语句块或catch 语句块中的语句“System.exit(0)” ,则直接退出程序,即这时的finally 语句块不会被执行到。
处理异常的第二种异常方式是转移异常方式。 格式如下:
[方法修饰词列表] 返回类型 方法名(方法的参数列表) throws 异常类型列表
{
方法体
}
例子:
public static void testException() throws Exception{
throw new Exception();
}
自定义异常类型
创建自定义异常类就是编写 java.lang.Exception 类的子类。