在程序中,错误可能产生于各种我们没有预料到的各种情况,在 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 语句捕获。
编辑:Henry 2021-10-26
版权属于:字节星球/肥柴之家 (转载请联系作者授权)
原文链接:https://www.bytecho.net/archives/1878.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
网站每日ip 1千,交换友链,mo**y1.us/521
谁允许你在我这里打广告了?第一,你网站有跟我交换链接的价值吗?本站非盈利我为什么需要流量?
第二,您看过本站的友链要求吗?
第三,我跟你很熟吗?最烦你这种评论,在别人文章里留下莫名其妙的广告评论!
最后,别再访问本站,不欢迎你这种没素质的人。