关于异常的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于异常的总结相关的知识,希望对你有一定的参考价值。

一、异常的分类

java内置异常类之间的继承关系如图:
技术图片
1.
Throwable:
Throwable是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 Exception。

Error:
Error指的是 Java 运行时内部错误和资源耗尽错误。 应用程序不抛出此类异常。 这种内部错误一旦出现,除了告知用户并使程序终止之外,再无能无力.。这种情况很少出现。

Exception:
Exception有两个子类,一个是IOException(编译器异常),另一个是RuntimeException(运行时异常)。
2.
其中Java语言规范将派生于Error 类或 RuntimeException 类的所有异常称为非受查异常, 所有的其他异常称为受查异常。
常见的非受查异常有:ArrayIndexOutOfBoundsException、IndexOutOfBoundsException、NullPointerException、IllegalStateException等;常见的受查异常有:ClassNotFoundException、IllegalAccessException、InterruptedException、NoSuchFieldException等。

二、异常的处理

捕获异常
1.try/catch语句:
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方,try/catch代码块中的代码称为保护代码。
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。
基本语法:

try{ 
 有可能出现异常的语句 ; 
}[catch (异常类型 异常对象) {
} ... ]

2.try/catch/finally语句:
与1是类似的,程序会捕获try代码块里面的代码,若捕获到异常则进行catch代码块处理。有finally则在catch处理后执行finally里面的代码,并且finally语句无论如何都会执行。
基本语法:

try{ 
 有可能出现异常的语句 ; 
}[catch (异常类型 异常对象) {
} ... ]
[finally {
 异常的出口
}]

3.自定义类捕获异常:
java可以自定义类异常,要注意的是:①所有异常都必须是 Throwable 的子类。②如果希望写一个检查性异常类,则需要继承 Exception 类。③如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
可以如下定义异常类:

class MyException extends Exception{
}

抛出异常:
1.throws/throw 关键字:如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
它们两个的区别如下:

public void test() throws Exception {
    throw new Exception();
}

throws表示一个方法声明可能抛出一个异常,throw表示此处抛出一个已定义的异常(可以是自定义需继承Exception,也可以是java自己给出的异常类)。

以上是关于关于异常的总结的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

JAVA异常知识点总结

几个关于js数组方法reduce的经典片段

关于JAVA 异常 基础知识/编码经验的一些总结

关于JAVA 异常 基础知识/编码经验的一些总结

关于异常的总结