异常

http://www.360doc.com/content/17/1115/09/35115976_703957459.shtml

Java异常体系

所有的异常类是从 java.lang.Exception 类继承的子类。

Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

Error 用来指示运行时环境发生的错误。

例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

异常类有两个主要的子类:IOException 类和 RuntimeException 类。

异常处理

1、捕获异常

try{
    //程序代码
}catch(异常类型){
    //异常处理
}finally{
    
}
  • Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

2、多重捕获块

  • 可以在 try 语句后面添加任意数量的 catch 块。
  • 如果保护代码中发生异常,异常被抛给第一个 catch 块。
  • 如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
  • 如果不匹配,它会被传递给第二个 catch 块。如此,直到异常被捕获或者通过所有的 catch 块。

3、throws/throw关键字

如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

4、finally

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

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

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

常见异常

1、NullPointerException

当应用程序试图在需要对象的地方使用 null 时,抛出该异常

2、IndexOutOfBoundsException

指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。

3、NumberFormatException

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

4、NegativeArraySizeException

如果应用程序试图创建大小为负的数组,则抛出该异常。

自定义异常

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
原文地址:https://www.cnblogs.com/heibaimao123/p/13770602.html