Day21 Java IO流 异常

本文详细介绍了Java中的异常处理,包括异常的分类,如Error和Exception,以及编译时期异常与运行时期异常的区别。讨论了处理异常的两种主要方法:try...catch...finally结构和throws关键字的使用。通过实例展示了如何捕获和处理多个异常,以及final, finally和finalize的区别。最后,阐述了throws和throw在异常处理中的作用和区别。" 126199169,12690190,HTML网页设计实践:网上书城项目,"['HTML', '前端', 'web', 'CSS', 'JavaScript']
摘要由CSDN通过智能技术生成

异常

Java程序出现不正常的情况

异常的分类

Java中的异常:Throwable

严重的问题:Error,我们不处理,这样的问题一般都是很严重的,比如说内存溢出(OOM)

问题:Exception(异常)分为编译时期异常与运行时期异常

编译时期异常:除了RuntimeException都是编译时期异常,必须要处理,如果不处理,程序编译无法通过,无法运行

运行时期异常:RuntimeException,这样的问题,一般情况下,我们不会对问题本身进行处理,因为这样的问题是在自己写代码的过程中由于逻辑的不严谨导致的。

如果程序出现了问题,并且我们没有做任何处理,最终JVM会做出默认处理,把异常的名称,相关的原因,以及出现问题的信息输出在控制台上,同时程序会停止,而且后续的代码不会执行。

异常的分类图解:

处理异常的两种方法

1、try...catch...finally

2、throws

try...catch...finally

try...catch...finally的处理格式:

try{

        可能会出现问题的代码

}catch(异常类名 变量名){

        针对出现问题后的处理代码

}finally{

        只要是程序顺利进行,finally中的内容无论如何都会执行

}

变形格式:

try{

        可能会出现问题的代码

}catch(异常类名 变量名){

        针对出现问题后的处理代码

}

注意:try中的代码越少越好;catch中必须要有内容,即使内容只是一句简单的提示语句

 以除数为0举例:

当在代码中直接输出10除以0时,编译不会出现异常,但运行会出现异常,即出现运行时期异常。

加入try...catch处理异常:

public class Demo1 {
    public static void main(String[] args) {
        int a=10;
        int b=0;
        
        try{
            System.out.println(a / b);
        }catch (ArithmeticException e){
            System.out.println("除数为0,无法相除");
        }
    }
}

输出结果:

上述是处理一个异常的情况,当处理两个及以上个异常的情况时,有两种做法:

1、每一个异常写一个try..catch

2、写一个try,多个catch:

第二种做法格式为:

try{

        可能会出现问题的代码

}catch(异常类名1 变量名1){

        针对异常1做的处理方案

}catch(异常类名2 变量名2){

        针对异常2做的处理方案

}... ...

当处理多个异常使用第二种方案时的注意事项:

1、catch只能匹配对应的异常,并且只能匹配一个异常

2、平级关系的异常顺序无所谓,但如果出现了父子继承关系,父类必须放在最后

3、try中的代码如果出错了,try中出错代码后面的代码不会执行,就会匹配catch中的异常,匹配到后执行解决方案,try...catch后面的代码正常执行。

4、catch中的异常类名尽量明确,不要用大的异常去处理

代码举例:

使用算术异常ArithmeticException和下标索引越界异常ArrayIndexOutOfBoundsException

public class Demo2 {
    public static void main(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值