前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java异常处理

Java异常处理

作者头像
字节星球Henry
修改2021-10-28 11:14:20
9550
修改2021-10-28 11:14:20
举报

在程序中,错误可能产生于各种我们没有预料到的各种情况,在 Java 中这种在程序运行时可能出现的一些错误称为异常(Exception),了解 Java 中常见的异常有助于帮我们快速定位问题,提高开发效率。

Java 所有的异常都是由 Throwable 继承而来,其中 Error 比较严重是无法手动抛出异常的,一般情况下我们最关心的就是 Exception 这种非致命性异常。

捕捉异常

Java 的异常捕获结构由 trycatchfinally 三部分组成,其中 try 语句块存放可能发生异常的 Java 语句;catchtry 之后,用来激发被捕获的异常;finally 语句块是异常处理结构的最后执行部分,如以下程序片段所示:

代码语言:javascript
复制
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 类即可自定义异常类:

代码语言:javascript
复制
public class myException extends Exception {
    public myException(String errorMessage) {
        super(errorMessage);
    }
}

以上代码片段中的 errorMessage 既是要输出的错误信息,如果我们想抛出自定义异常对象,则要使用 throw 关键字,此时程序在执行到 throws 时立即终止,其后面的语句将不会执行:

代码语言:javascript
复制
public class study {
    static int avg(int num_1, int num_2) throws myException {
        if(...)
            throws new myException("...");    //抛出的错误信息
        if(...)
            throws new myException("...");    //抛出的其他错误信息
        return ...;
    }
}

throw 关键字通常用于在 声明方法时指定该方法可能抛出的异常类型,多个异常可用逗号分隔,比如:

代码语言:javascript
复制
public class Main {
    static int avg(int num_1, int num_2) throws NegativeArraySizeException, ArrayIndexOutOfBoundsException {
        //...
    }
}

RuntimeException

其次,Java 还提供了常见的 RuntimeException,这些异常同样可用通过 try-catch 语句捕获。


编辑:Henry 2021-10-26

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 捕捉异常
  • 常见异常
  • 自定义异常
  • RuntimeException
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档