异常处理办法
try……catch和finally
java中,由于发生了异常,程序立即终止,无法继续向下执行。为了解决这样的问题,java中提供了一种对异常进行处理的方式————异常捕获。异常捕获通常使用try……catch语句。
语法:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
注:
try代码块中编写可能发生异常的java语句,catch代码块中编写针对异常进行处理的代码。当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。catch代码块需要一个参数指明它所能够接收的异常类型,这个参数的类型必须是Exception类或其子类。
在try代码块中,发生异常语句后面的代码块是不会被执行的。
建立在进行catch处理时,catch中一定要定义具体处理方式。
finally中的语句是一定会执行的,通常用于关闭资源。除了在try……catch中执行了System.exit(0)语句。System.exit(0)表示退出当前的java虚拟机,java虚拟机停止了,任何代码都不能再执行了。
catch是用于处理异常。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明。
throws关键字
java中允许在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样调用者在调用方法时就明确知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。
语法:
修饰符 返回值类型 方法名([参数1,参数2……]) throws ExceptionType1[,ExceptionType2……]{}
注:
使用throws处理异常并不是真正的处理异常,而是推卸责任,谁调用就会抛给谁。
便于提高安全性,让调用出进行处理。不处理编译失败。
对多异常的处理
1.声明异常时,建议声明更为具体的异常。这样处理的可以更具体。
2.对方声明几个异常,就对应有几个catch块。不要定义多余的catch块。如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。catch必须从上到下,从小到大捕捉。