在程序中,错误可能产生于各种我们没有预料到的各种情况,在 Java 中这种在程序运行时可能出现的一些错误称为异常(Exception),了解 Java 中常见的异常有助于帮我们快速定位问题,提高开发效率。
Java 所有的异常都是由 Throwable 继承而来,其中 Error 比较严重是无法手动抛出异常的,一般情况下我们最关心的就是 Exception 这种非致命性异常。
捕捉异常
Java 的异常捕获结构由 try,catch 和 finally 三部分组成,其中 try 语句块存放可能发生异常的 Java 语句;catch 在 try 之后,用来激发被捕获的异常;finally 语句块是异常处理结构的最后执行部分,如以下程序片段所示:
try {
//可能抛出异常的语句
}
catch(exceptionType e) {
//对exceptionType异常进行处理的语句
}
catch(otherExceptionType e) {
//对其他异常的处理
}
//...
finally {
//...
}
由此可见,Java 异常处理大致分为 try-catch 语句块和 finally 语句块。当 try 代码块中的语句发生异常时,程序会跳转到 catch 代码块中执行,执行完毕后讲继续执行之后的代码,而不会执行 try 代码块中发生异常语句之后的代码,从而 Java 不会因为一个异常而影响整个程序的运行。
上面代码块中的 e 是一个对象,我们可以使用以下常用的成员函数来获取抛出异常的有关信息:
getMessage() | 输出错误性质 |
toString() | 给出异常的类型与性质 |
printStackTrace() | 指出异常的类型、性质、栈层次及出现在程序中的位置 |
常见异常
在 Java 中已经提供了很多异常来描述比较常见的错误,其中有的需要程序员进行捕获处理或声明来抛出,有的由 Java 虚拟机自动捕获处理,Java 常见的异常很多,因为大部分异常类名由我们很熟悉的单词组成,就不一一介绍其异常类的意义了。
ClassCaseException | 类型转换 异常 |
ClassNotFoundException | 未找到对应类 异常 |
... | ... |
自定义异常
使用 Java 内置的异常类即可描述大部分异常情况,除此之外的异常,我们只需要继承 Exception 类即可自定义异常类:
public class myException extends Exception {
public myException(String errorMessage) {
super(errorMessage);
}
}
以上代码片段中的 errorMessage 既是要输出的错误信息,如果我们想抛出自定义异常对象,则要使用 throw 关键字,此时程序在执行到 throws 时立即终止,其后面的语句将不会执行:
public class study {
static int avg(int num_1, int num_2) throws myException {
if(...)
throws new myException("..."); //抛出的错误信息
if(...)
throws new myException("..."); //抛出的其他错误信息
return ...;
}
}
throw 关键字通常用于在 声明方法时指定该方法可能抛出的异常类型,多个异常可用逗号分隔,比如:
public class Main {
static int avg(int num_1, int num_2) throws NegativeArraySizeException, ArrayIndexOutOfBoundsException {
//...
}
}
RuntimeException
其次,Java 还提供了常见的 RuntimeException,这些异常同样可用通过 try-catch 语句捕获。
原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/44213.html