16.5. 自定义异常类

有些公司为了提高代码的可重用性,自己开发了一些Java类库或框架,其中少不了自己编写了一些异 常类。实现自定义异常类需要继承Exception类或其子类,如果自定义运行时异常类需继承 RuntimeException类或其子类

MyException.java

package com.a51work.cn;

public class MyException extends Exception {
    public MyException() {
    }

    public MyException(String message) {
        super(message);
    }
}

YiChang13.java

package com.a51work.cn;

public class YiChang13 {
    public static void main(String[] args) {
        // 创建一个自定义异常对象
        MyException me = new MyException("自定义异常");
        // 获取自定义异常信息
        System.out.println("自定义异常对象携带的错误信息为:"+ me.getMessage());
        System.out.println("自定义异常的字符串表示为:" + me.toString());
    }
}


/*
自定义异常对象携带的错误信息为:自定义异常
自定义异常的字符串表示为:com.a51work.cn.MyException: 自定义异常
* */

YiChang14.java

package com.a51work.cn;

import java.util.Scanner;

public class YiChang14 {
    // 定义一个可能发生自定义异常的方法
    public String deiFen(int fen) throws MyException {
        if (fen >= 0 && fen <= 100) {
            return "正常";
        } else {
            // 当分数不在0到100的范围内时排除自定义异常
            throw new MyException(">>>>错误提示,不在0~100的要求范围内<<<<");
        }
    }

    public static void main(String[] args) {
        YiChang14 hu = new YiChang14();

        while (true) {
            System.out.println("请输入一个整数:");

            // 捕获输入
            try {
                Scanner input = new Scanner(System.in);
                int num = input.nextInt();
                try {
                    String s = hu.deiFen(num);
                    System.out.println(s);
                    break;
                } catch (MyException e) {
                    System.out.println("异常信息为:" + num + "【" + e.getMessage() + "】");
                }
            } catch (Exception e) {
                System.out.println("您输入的不是整数.");
            }

        }
    }
}