Java异常处理机制及自定义异常
我们总是试图避免在软件程序中错误的发生,但是百分之百没有错误的程序是不存在的。无论怎样,如果我们能适当的处理错误,将会极大的改善程序的可读性、可靠性以及可维护性。Java编程语言使用异常来处理错误。
我们总是试图避免在软件程序中错误的发生,但是百分之百没有错误的程序是不存在的。无论怎样,如果我们能适当的处理错误,将会极大的改善程序的可读性、可靠性以及可维护性。Java编程语言使用异常来处理错误。
异常处理程序的基本形式如下:
method() throws ExceptionType1, ExceptionType2, …{ try { // 程序块 } catch (ExceptionType1 e) { // 对ExceptionType1的处理 } catch (ExceptionType2 e) { // 对ExceptionType2的处理,处理了一部分,throw(e); 再抛出这个“异常”给上层的调用者 } finally { // 总是要执行的语句 } }
异常对象
每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Throwable类有两个标准子类:错误类()和异常类()。
异常类的继承关系
在实际的程序开发中,异常无处不在,并且种类繁多。区分什么情况下会出现什么样的异常是十分必要的。异常可以根据发生的原因进行分类,以及编译时对异常的检查情况,分为可检测异常和不可检测异常两种。
异常捕获
Java的异常处理是通过try、catch、throw、throws和finally这5个关键词来实现的。通过在代码中使用try选定监控异常的范围,然后使用catch捕获异常,最终可以对异常进行处理。若在try块中抛出的异常没有被捕获,Java将退出当前方法并向上层调用者传递异常。
创建自定义异常
有时候Java类库中提供的异常处理类无法满足特定需求,需要自定义异常。创建自定义异常非常简单,只需要定义一个继承自Exception的新类即可。例如,如果需要提示水位过高的异常,可以创建一个自定义异常类,如下所示:
class MyException extends Exception { private int i; MyException(int a) { i a; } public String toString() { return "水位过高"; } }
通过自定义异常,可以更灵活地处理程序中出现的特殊情况,提高程序的可维护性和扩展性。