异常好处:
1、不必在方法调用处进行检查
2、只需在一个地方处理错误
所有标准异常类都有两个构造器:
一个默认构造器
另一个是接受字符串作为参数
要自己定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承
printStackTrace()将打印从方法调用处直到异常抛出处的方法调用序列
e.printStackTrace()
e.getMessage()
代码必须与异常说明保持一致,如果方法里的代码产生了异常却没有进行处理,编译器会发现这个问题并提醒你;要么处理这个异常,要么就在异常说明中表明此方法将产生异常
从RuntimeException继承的异常,它们可以在没有异常说明的情况下被抛出
catch(Exception e)捕获所有异常
如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将是原来异常抛出点调用栈信息,而非重新抛出点的信息。要想更新这个信息,可以调用fillInStackTrace()方法。
throw (Exception)e.fillInStackTrace()
永远不必为清理一个异常对象而担心,或者说为异常对象的清理而担心。它们都是用new在堆上创建的对象,所以垃圾回收器会自动把它们清理掉
异常链
Throwable这个Java类被用来表示任何可以作为异常被抛出的类
Throwable对象分为两种类型:
Error用来表示表示编译时和系统错误
Exception是可以被抛出的基本类型
如果对null引用进行调用,Java会自动抛出NullPointerException异常
finally子句的运用:
try
{
}
catch(A a)
{
}
finally
{
//不管try、catch,finally都会执行
}
finally子句用于关闭已打开的文件、网络连接或者消除屏幕上画的图形
finally子句放在return之后也会被执行
当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常
异常限制对构造器不起作用,不必理会基类构造器所抛出的异常
派生类构造器不能捕获基类构造器抛出的异常