1、错误处理
1)异常分类
异常对象都派生于Throwable类的一个实例
Throwable下一层分为Error与Exception
Error描述了Java运行时系统内部错误和资源耗尽错误(很少出现)
Exception下一层分为RuntimeException与其他异常
RuntimeException包括
- 错误的类型转换
- 数组访问越界
- 访问空指针
其他异常包括
1.试图在文件尾部后读取数据
2.试图打开不存在的文件
3.试图根据给定的字符串查找Class对象,而这个字符串表示的类不存在
Error与RuntimeException称为受查异常
其他异常被称为非受查异常
2、创建异常类
例:定义一个派生于IOException的类,习惯上定义两个构造器,一个默认构造器,另一个带有详细描述信息的构造器
class FileFormatException extends IOException{
public FileFormatException(){}
public FileFormatException(String gripe){
super(gripe);
}
}
3、捕获异常
对于知道如何处理的异常应该进行捕获,对于不知道如何处理的异常应该传递throw
4、再次抛出异常
try{
...
}catch(SQLException e){
throw new ServletException("database error:"+e.getmessage());
}
更好的处理方法
try{
...
}catch(SQLException e){
Throwable se=new ServletException("database error");
se.initCause(e);
throw se;
}
//捕获到异常时,可以使用Throwable e=se.getCause();得到原始异常
5、使用断言
assert 条件;
assert 条件:表达式;表达式就是产生一个消息字符串
在开发测试程序时使用断言
6、记录日志
1)基本日志
生成简单的日志记录,使用Logger.getGlobal().info();
Logger.getGlobal().setLevel(Level.OFF);将会取消所有日志
2)高级日志
将日志记录到自定义日志记录器
调用getLogger()创建或获取记录器
private static final Logger myLogger=Logger.getLogger(“com.mycompany.myapp”);
注:未被引用的日志记录器可能会被垃圾回收,所有使用静态变量存储。