我们开发的程序总是会有很多不期而至的异常,java提供的异常处理机制就是用来处理、响应错误,是一种强大的调试手段,有效的异常处理可以让我们程序更加健壮、易于调试。
java定义的异常结构:
java异常分为 error、checked、unchecked异常三类。
error是程序无法处理的异常,一般多是jvm错误引起的。对应java异常体系中的Error类及其子类。
checked指编译过程中能够检查的异常,包括Exception及其子类。
unchecked指运行时异常,包括RuntimeException和Error及他们的子类。
异常的处理机制包括: 捕获异常 、抛出异常。
捕获异常 :try-catch-finally
try{
//code that might generate exceptions
}catch(Exception e){
//the code of handling exception1
}catch(Exception e){
//the code of handling exception2
}finally{
//always do
}
该段代码捕获try{}内代码可能发生的异常,只要代码产生的异常是第一个catch中异常类型或它的子类,否则继续向下catch匹配。
提示:try{}中尽量少监控代码,只对可能产生异常的代码进行监控。
finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
抛出异常 :
public void readPreferences(String filename)
throws IllegalArgumentException{
if (filename == null){
throw new IllegalArgumentException("filename is null");
} //if
//...perform other operations...
InputStream in = new FileInputStream(filename);
//...read the preferences file...
}
- throw – 用于抛出异常。
throws – 用在方法签名中,用于声明该方法可能抛出的异常。
java异常的内容基础就这些。
经验:开发中对异常的处理要做到具体明确,严禁不负责任的抛Exception。
- 异常的处理回答三个问题,1、哪里出错了 2、什么出错了 3为什么错,如果解决不了这三个问题就先抛出。
- -