java 异常code分类别_JAVA异常详解

1、异常实现及分类

先看下异常类的结构图

6d52f9360bad52b6f13c04607bfc2941.pngjava

上图能够简单展现一下异常类实现结构图,固然上图不是全部的异常,用户本身也能够自定义异常实现。上图已经足够帮咱们解释和理解异常实现了:ide

1.全部的异常都是从Throwable继承而来的,是全部异常的共同祖先。

2.Throwable有两个子类,Error和Exception。

其中Error是错误,对于全部的编译时期的错误以及系统错误都是经过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,由于它们在应用程序的控制和处理能力之 外,并且绝大多数是程序运行时不容许出现的情况。对于设计合理的应用程序来讲,即便确实发生了错误,本质上也不该该试图去处理它所引发的异常情况。在 Java中,错误经过Error的子类描述。编码

3.Exception

是另一个很是重要的异常子类。它规定的异常是程序自己能够处理的异常。异常和错误的区别是,异常是能够被处理的,而错误是无法处理的。 设计

4.Checked Exception

可检查的异常,这是编码时很是经常使用的,全部checked exception都是须要在代码中处理的。它们的发生是能够预测的,正常的一种状况,能够合理的处理。好比IOException,或者一些自定义的异常。除了RuntimeException及其子类之外,都是checked exception。指针

5.Unchecked Exception

RuntimeException及其子类都是unchecked exception。好比NPE空指针异常,除数为0的算数异常ArithmeticException等等,这种异常是运行时发生,没法预先捕捉处理的。Error也是unchecked exception,也是没法预先处理的。code

2、异常的处理

代码中的异常处理实际上是对可检查异常的处理。

1. 经过try...catch语句块来处理:blog

e.g.

try

{

// 程序代码

}catch(ExceptionName e1)

{

//Catch 块

}

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。继承

若是发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是同样。虚拟机

2. 另外,也能够在具体位置不处理,直接抛出,经过throws/throw到上层再进行处理,具体的,若是一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可使用 throw 关键字抛出一个异常,不管它是新实例化的仍是刚捕获到的。

下面方法的声明抛出一个 RemoteException 异常:it

import java.io.*;

public class className

{

public void deposit(double amount) throws RemoteException

{

// Method implementation

throw new RemoteException();

}

//Remainder of class definition

}

3. finally关键字

finally 关键字用来建立在 try 代码块后面执行的代码块。

不管是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,能够运行清理类型等收尾善后性质的语句。

finally 代码块出如今 catch 代码块最后,语法以下:

try{

// 程序代码

}catch(异常类型1 异常的变量名1){

// 程序代码

}catch(异常类型2 异常的变量名2){

// 程序代码

}finally{

// 程序代码

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值