CC00069.bigdatajava——|Java&集合类库.V05|——|Java.v05|异常机制.v50|异常抛出|补充|

本文介绍了Java中异常处理的基本概念,包括异常的抛出和方法重写时的异常处理原则。通过示例代码展示了如何在方法中抛出和捕获IOException,并强调了子类重写方法时异常处理的规则。同时,分享了在多层方法调用中如何有效地管理异常。最后,提供了一个子类重写异常方法的例子,进一步说明了异常处理的灵活性。
摘要由CSDN通过智能技术生成
一、异常抛出
### --- 基本概念

——>        在某些特殊情况下有些异常不能处理或者不便于处理时,
——>        就可以将该异常转移给该方法的调用者,这种方法就叫异常的抛出。
——>        当方法执行时出现异常,则底层生成一个异常类对象抛出,此时异常代码后续的代码就不再执行。
### --- 语法格式

——>        访问权限 返回值类型 方法名称(形参列表) throws 异常类型1,异常类型2,...{ 方法体; }
——>        如:
——>            public void show() throws IOException{}
### --- 方法重写的原则

——>        a.要求方法名相同、参数列表相同以及返回值类型相同,从jdk1.5开始支持返回子类类型;
——>        b.要求方法的访问权限不能变小,可以相同或者变大;
——>        c.要求方法不能抛出更大的异常;
### --- 注意:

——>        子类重写的方法不能抛出更大的异常、不能抛出平级不一样的异常,
——>        但可以抛出一样的异常、更小的异常以及不抛出异常。
### --- 经验分享

——>        若父类中被重写的方法没有抛出异常时,则子类中重写的方法只能进行异常的捕获处理。
——>        若一个方法内部又以递进方式分别调用了好几个其它方法,
——>        则建议这些方法内可以使用抛出的方法处理到最后一层进行捕获方式处理。
二、编程代码
package com.yanqi.task16;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ExceptionThrowsTest {

    public static void show() throws IOException {
        FileInputStream fis = new FileInputStream("d:/a.txt");
        System.out.println("我想看看你抛出异常后是否继续向下执行???");
        fis.close();
    }

    public static void test1() throws IOException {
        show();
    }

    public static void test2() throws IOException {
        test1();
    }

    public static void test3() throws IOException {
        test2();
    }

    // 不建议在main方法中抛出异常   JVM负担很重
    public static void main(String[] args) /*throws IOException*/ {
        try {
            show();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("------------------------------------");
        try {
            test3();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
三、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=57577:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task16.ExceptionThrowsTest
java.io.FileNotFoundException: d:\a.txt (系统找不到指定的文件。)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at com.yanqi.task16.ExceptionThrowsTest.show(ExceptionThrowsTest.java:10)
    at com.yanqi.task16.ExceptionThrowsTest.main(ExceptionThrowsTest.java:30)
java.io.FileNotFoundException: d:\a.txt (系统找不到指定的文件。)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at com.yanqi.task16.ExceptionThrowsTest.show(ExceptionThrowsTest.java:10)
    at com.yanqi.task16.ExceptionThrowsTest.test1(ExceptionThrowsTest.java:16)
    at com.yanqi.task16.ExceptionThrowsTest.test2(ExceptionThrowsTest.java:20)
    at com.yanqi.task16.ExceptionThrowsTest.test3(ExceptionThrowsTest.java:24)
    at com.yanqi.task16.ExceptionThrowsTest.main(ExceptionThrowsTest.java:37)
------------------------------------

Process finished with exit code 0
四、异常抛出补充:编程代码
package com.yanqi.task16;

import java.io.IOException;

public class ExceptionMethod {

    public void show() throws IOException {}
}
五、编程代码
package com.yanqi.task16;

import com.sun.jdi.ClassNotLoadedException;

import java.io.FileNotFoundException;
import java.io.IOException;

public class SubExceptionMethod extends ExceptionMethod {

    @Override
    public void show() throws IOException {} // 子类重写的方法可以抛出和父类中方法一样的异常
    //public void show() throws FileNotFoundException {}  // 子类重写的方法可以抛出更小的异常
    //public void show() {} // 子类可以不抛出异常
    //public void show() throws ClassNotLoadedException {} // 不可以抛出平级不一样的异常
    //public void show() throws Exception {} // 不可以抛出更大的异常
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yanqi_vip

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

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

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

打赏作者

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

抵扣说明:

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

余额充值