Java - 异常处理 - throws细节补充

throws异常处理基本介绍

  1. 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
  2. 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
举例
package com.tao.throws_;

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

/**
 * Create By 刘鸿涛
 * 2021/12/31 20:07
 */
public class Throws01 {
    public static void main(String[] args) {

    }
    //FileNotFoundException异常可以换成 Exception父类异常,这里的异常可以写多个
    public void f1() throws FileNotFoundException,NullPointerException{
        //创建了一个文件流对象
        //这里的异常是一个FileNotFoundException 编译异常处理
        //(第一种)使用前面讲过的 try - catch - finally
        //(第二种)使用throws,抛出异常,让调用f1方法的调用者(方法)处理

        FileInputStream fis = new FileInputStream("d://aa.txt");

    }
}

throws异常处理注意事项和使用细节 [ThrowsDetail.java]

  1. 对于编译异常,程序中必须处理,比如try - catch 或者 throws
  2. 对于运行时异常,程序中如果没有处理,默认就是throws的方式处理
  3. 子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型
  4. 在throws过程中,如果有方法 try - catch,就相当于处理异常,就可以不必throws
举例
package com.tao.throws_;

/**
 * Create By 刘鸿涛
 * 2021/12/31 20:30
 */
public class ThrowsDetail {
    public static void main(String[] args) {

    }
    //2.对于运行时异常,程序中如果没有处理,默认就是throws的方式处理
    public void f2(){
        int n1 = 10;
        int n2 = 0;
        double res = n1 / n2;
    }
}
class Father{   //父类
    public void method() throws RuntimeException{}  //父异常
}
class Son extends Father{   //子类重写方法
    //3.子类重写父类的方法时,对抛出异常的规定:子类重写的方法
    // 所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型
    @Override
    public void method() throws NullPointerException{}  //子异常
}
//4.有了try - catch后不用再加throws

package com.tao.throws_;

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

/**
 * Create By 刘鸿涛
 * 2021/12/31 20:47
 */
public class ThrowsDetail02 {
    public static void main(String[] args) {

    }
    public static void f1(){
        //思考问题 调用f3()报错
        //1.因为f3()方法抛出的是一个编译异常
        //2.即这时,就要去f1()必须处理这个编译异常
        //3.在f1()中,要么 try - catch - finally,或者继续throws 这个编译异常
        try{
            f3();   //抛出异常
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
    }

    public static void f3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("d://aa.txt");

    }

    public static void f4(){
        //1.在f4()中调用方法f5() 是OK
        //2.原因是F5()抛出的是运行异常
        //3.而java中,并不要求程序员显示处理,因为有默认处理机制
        f5();
    }
    public static void f5() throws RuntimeException{

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鬼鬼骑士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值