异常,简单点来说,就是程序由于某些问题而不能正常的运行下去。
异常Exception,与错误Error都有同一个父类Throwable(可抛出)。
- java.lang.Object
- java.lang.Throwable
- java.lang.Exception
- java.lang.Error
-
Exception(异常)是应用程序中可能的可预测、可恢复问题。一般大多数异常表示中度到轻度的问题。异常一般是在特定环境下产生的,通常出现在代码的特定方法和操作中。在 EchoInput 类中,当试图调用 readLine 方法时,可能出现 IOException 异常。
Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。 - Error(错误)表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。
异常的使用
代码在执行的过程中,比较理想的状态是没有问题。但是这很难达到,因为你无法保证你说需要的东西就一定能拿到。那出现这种问题的时候,该如何处理?抛出异常,让调用这个api的对象处理。
if(出现异常情况){
//抛出异常
throw new Exception();
}
既然会抛出异常,那就得处理异常。
//对可能出现异常的方法进行try-catch包围,进行异常捕获
try{
api();
} catch(Exception e){
//捕获到异常,进行处理
...
}finally{
//无论是否捕获到异常,都会处理
...
}
万一当前情况无法处理这个异常,或不想处理,你可以这样做。
public void run()
//将异常抛出,不做处理
throws Exception {
//调用可能会出现异常的方法
...
}
Exception是所有异常的父类,抛出Exception是比较笼统的处理,要想针对性的处理,就得使用Exception的子类(太多了,可以自行查看jdk文档)了。
还有种就是自定义异常了,可以继承Throwable或Throwable的子类。当然,增加了自定义的异常,就需要去维护,看需求再考虑是否增加了。
网友评论