Java基础笔记41——自定义异常类

自定义异常类步骤:


1.自定义异常类要继承Exception

2.提供一个带参数的构造函数

 

例子:

MyException.java:

package com.lqh.chapter06;

public class MyException extends Exception {

    //用于保存异常发生的原因
    String message;

    public MyException(String message) {
        this.message = message;
    }

    //访问器方法,用来获取异常的信息
    public String getMessage() {
        return message;
    }
}

 

_42MyException.java:

package com.lqh.chapter06;

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

public class _42MyException {
    // 告诉调用方法的人,该方法可能存在某类异常
    public static void throwMyException() throws MyException {
        // 1.文件找不到
        try {

            FileInputStream input = new FileInputStream(new File("nihao.txt"));
            // 2.空指针异常
            String str = null;
            System.out.println(str.length());

            // 3.数组下标越界异常
            int[] list = new int[] { 1, 2, 3, 4, 5 };
            for (int i = 0; i <= list.length; i++) {
                System.out.println(list[i]);
            }

            // 4.算数异常
            int num = 1 / 0;
        }
        // 1.负责捕获“文件找不到”异常
        catch (FileNotFoundException e) {
            throw new MyException("MyException提示的错误:文件找不到");
        }
        // 2.负责捕获“空指针”异常
        catch (NullPointerException e) {
            throw new MyException("MyException提示的错误:空指针");
        }
        // 3.负责捕获“数组下表越界异常”
        catch (ArrayIndexOutOfBoundsException e) {
            throw new MyException("MyException提示的错误:数组下表越界异常");
        }
        // 4.负责捕获“算数异常”
        catch (ArithmeticException e) {
            throw new MyException("MyException提示的错误:算数异常");
        }
    }
    public static void main(String[] args) {
        try {
            throwMyException();
        } catch (MyException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());//调用自定义异常类的方法
        }
    }
}

 

练习:

编写一个检查给定的数字的数据类型是否为byte的程序,如果此数字超出byte数据类型表示的数的范围,则引发用户自定义的异常ByteSizeException,并显示相应的错误信息(知识点:自定义异常) [选作题]
步骤1:创建用户自定义异常类ByteException
步骤2:在main方法中编写逻辑代码
步骤3:运行并测试

 

package com.lqh.chapter06;

import java.util.Scanner;
public class Test {

    public static void main(String[] args) throws ByteException {
        System.out.println("请输入一个数");
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        if (num < Byte.MIN_VALUE || num > Byte.MAX_VALUE) {
            throw new ByteException("输入的数字不是byte类型");
        } else {
            System.out.println("输入的数字是byte类型");
        }
    }
}

class ByteException extends Exception {
    private String message;

    public ByteException(String message) {
        this.message = message;
    }

    public String getMessage() {
        return this.message;
    }
}

 

posted @ 2021-09-17 22:01  `青红造了个白`  阅读(269)  评论(0编辑  收藏  举报