【Java】异常

本文详细介绍了Java中的异常处理,包括异常的产生与分类(Error,Exception,RuntimeException),如何使用try-catch-finally结构捕获和处理异常,以及throw和throws关键字在方法声明中的应用。
摘要由CSDN通过智能技术生成

1. 异常的产生和分类

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception

Throwable体系:

  • Error:严重错误Error,无法通过处理的错误,只能事先避免。
  • Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。
    • RuntimeException:运行时异常,编译阶段不出现异常提醒,运行时出现的异常。(如数组索引越界)
    • 编译时异常。(如日期解析异常)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 捕获异常

如果try 中可能遇到多个问题,要写多个 catch 与之对应。如果要捕获多个异常,且异常中存在父子关系,那么父类一定要写在下面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也可以同时捕获多个异常:

catch(ArrayIndexOutOfBoundsException | ArithmeticException){}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 抛出异常 throw 和声明异常 throws

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).

public class ThrowsDemo {
    public static void main(String[] args) throws FileNotFoundException {
        read("a.txt");
    }

    // 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明
    public static void read(String path) throws FileNotFoundException {
        if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 
            // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throw
            throw new FileNotFoundException("文件不存在");
        }
    }
}

4. finally

try…catch…finally:需要处理异常,finally里面代码必须执行。

注意:finally不能单独使用。

public class TryCatchDemo4 {
    public static void main(String[] args) {
        try {
            read("a.txt");
        } catch (FileNotFoundException e) {
            //抓取到的是编译期异常  抛出去的是运行期 
            throw new RuntimeException(e);
        } finally {
            System.out.println("不管程序怎样,这里都将会被执行。");
        }
        System.out.println("over");
    }
    /*
     *
     * 我们 当前的这个方法中 有异常  有编译期异常
     */
    public static void read(String path) throws FileNotFoundException {
        if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 
            // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throw
            throw new FileNotFoundException("文件不存在");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秀秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值