您的位置:首页 > 其它

关于异常的总结

2020-05-07 22:05 281 查看

一、异常的分类

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自己给出的异常类)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: