Java异常处理机制

来源:互联网 发布:人工智能性爱系统 编辑:程序博客网 时间:2024/05/21 07:00

Java对于异常的定义的结构是 Throwable类,派生出两个子类:error exception

下面介绍这两个子类:

 error : 系统级别出现的错误,通常是JVM出现的异常,这类错误是程序不可控的。

 exception:程序级别的错误。通常我们称为异常。这一类问题是可以通过程序解决的。


 Java中解决异常的步骤:发现异常 ——捕获异常—— 解决异常。

 try语句的语法格式:

try{

可能出现错误的代码片段

}

catch语句:用于捕获try中出现的异常,并实现解决方式。

try{

}catch(Exception_type e){

解决异常的代码片段

}

catch语句可以出现多次。catch中列举的异常类型应本着子类在先父类在后的原则。

throw语句:主动抛出异常。

语法:throw e; //e为某个异常的实例


使用throw主动抛出异常的情况:

1. 分清责任。当调用该方法去处理问题的过程中出现错误,往往我们会将错误抛出,因为调用方有着决策上的权力。我们应当通知在这个环节出现的错误,以便调用方捕获并解决。

2. 执行逻辑的过程中,出现了一个符合语法规则但是不符合业务逻辑要求的情况时,我们也可以当做异常去处理,这时我们也会主动抛出一个异常。


throws声明:throws用于声明方法要抛出的异常类型。

调用被throws声明的方法时,需要强制捕获该方法声明的抛出的异常。

通常在方法中,我们使用throw主动抛出的异常类型都要声明在throws中。只有RuntimeException及其子类异常在throw抛出时,方法不需要将其异常类型定义在throws中。

RuntimeException及其子类属于非检查异常,指的是在编译期间,不检查这类异常的捕获。

常见的RuntimeException的子类: NullPointerException    ArrayIndexOutofBoundsException   ClassCastException    NumberFormatException


下面说一下重写方法时的异常处理:

 如果在继承一个类时,父类的方法声明了throws抛出指定异常,那么子类在重写该方法时应注意:

  1. 可以不指定throws

  2. 可以throws父类方法异常的子类异常

  3. 可以throws父类throws的部分异常

但是不能: 

 1.  throws父类方法throws的父类异常

 2. throws 父类方法中没有throws的异常

0 0