37 自定义异常

例子:

HotelTryCatchDemo.java:
package com.snape.java.ExceptionProj;

import java.util.Scanner;

public class HotelTryCatchDemo {
    public static void main(String[] args) {
        try {
            AgeTest();
        } catch (HotelAgeException e) {
            System.out.println(e.getMessage());
            System.out.println("酒店前台工作人员不允许办理入住登记");    //根据情况作出的特殊处理
        }catch (Exception e){
            e.printStackTrace();
        }
    }//main方法结束

    /**
     * throw 抛出异常对象的处理方案:
     * 1.通过try...catch包含throw语句,自己抛自己处理
     * 2.通过throws在方法声明处抛出异常类型--谁调用谁处理--调用者可以自己处理,也可以继续上抛
     *   此时可以抛出与throw对象相同的类型或者其父类
     */
    //描述酒店入住规则,年龄在18岁以下或80岁以上,须由亲友陪同
//    public static void AgeTest(){
//        try {
//            Scanner input = new Scanner(System.in);
//            System.out.println("请输入年龄:");
//            int age = input.nextInt();
//
//            if(age<18 || age>80){
//                throw new Exception("年龄在18岁以下或80岁以上,须由亲友陪同");
//            }else{
//                System.out.println("欢迎来到本酒店");
//            }
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//    }//AgeTest()方法结束


    public static void AgeTest() throws HotelAgeException {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = input.nextInt();

        if(age<18 || age>80){
//            throw new Exception("年龄在18岁以下或80岁以上,须由亲友陪同");
            throw new HotelAgeException();  //直接进行无参构造
        }else{
            System.out.println("欢迎来到本酒店");
        }
    }//AgeTest()方法结束
}//类HotelTryTest类结束
HotelAgeException.java:
package com.snape.java.ExceptionProj;

public class HotelAgeException extends Exception {
    //无参构造方法
    public HotelAgeException(){
        super("18岁以下、80岁以上的住客须由亲友陪同");
    }
}

结果:

原文地址:https://www.cnblogs.com/CPU-Easy/p/12182737.html