Java 常用工具类--Java异常

处理程序运行阶段的错误,不是编译阶段。


image.png

异常处理分类

  • 抛出异常
  • 捕获异常


    image.png
package com.alan.test;

import java.util.Scanner;

public class TryDemoOne {

    public static void main(String[] args) {
        /*
        // 定义两个整数,输出两数之商
        
        int one = 12;
        int two = 2;
        22
        System.out.println("one和two的商:"+(one/two));
        */
        
        // 定义两个整数,接收用户的键盘输入,之后输出两数之商
        
        Scanner sc = new Scanner(System.in);
        System.out.println("=====运算开始=====");
        try {
            System.out.print("请输入第一个整数one:");
            int one = sc.nextInt();
            System.out.print("请输入第二个整数one:");
            int two = sc.nextInt();
            System.out.println("one和two的商:"+(one/two));
        //catch块捕获异常后,程序会继续向下执行。如果不捕获异常,接下来的程序都无法执行
        }catch(Exception e) {                           
            System.out.println("程序出错了~~");
            e.printStackTrace();
        }finally {
            System.out.println("=====运算结束=====");
        }

    }

}

throw与throws

package com.alan.test;

import java.util.Scanner;

public class TryDemoThree {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            testAge2();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    
    //描述酒店入住规则:年龄小于18或者大于80,必须有亲友陪同
    /*
     * throw抛出异常对象的处理方案
     * 1、通过try catch 包含throw语句,自己抛出异常,自己捕获处理。
     * 2、通过throws在方法声明出抛出异常类型--谁调用谁处理--调用者可以自己处理,也可以继续上抛。
     * */
    public static void testAge() {
            try {       
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new Exception("年龄小于18或者大于80,必须有亲友陪同");
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void testAge2() throws Exception {
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new Exception("年龄小于18或者大于80,必须有亲友陪同");
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
        }
        
    
}

throw

package com.alan.test;

import java.util.Scanner;

public class TryDemoThree {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            testAge2();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    
    //描述酒店入住规则:年龄小于18或者大于80,必须有亲友陪同
    /*
     * throw抛出异常对象的处理方案
     * 1、通过try catch 包含throw语句,自己抛出异常,自己捕获处理。
     * 2、通过throws在方法声明出抛出异常类型--谁调用谁处理--调用者可以自己处理,也可以继续上抛。
     * */
    public static void testAge() {
            try {       
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new Exception("年龄小于18或者大于80,必须有亲友陪同");
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void testAge2() throws Exception {
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new Exception("年龄小于18或者大于80,必须有亲友陪同");
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
        }
}

自定义异常

package com.alan.test;

public class HotelAgeException extends Exception {
    
    public HotelAgeException() {
        super("年龄小于18或者大于80,必须有亲友陪同");
    }
}
package com.alan.test;

import java.util.Scanner;

public class TryDemoThree {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            testAge2();
        } catch (HotelAgeException e) {
            System.out.println(e.getMessage());
            System.out.println("酒店前台工作人员不允许办理入住登记");
        }
    }
    
    
    //描述酒店入住规则:年龄小于18或者大于80,必须有亲友陪同
    /*
     * throw抛出异常对象的处理方案
     * 1、通过try catch 包含throw语句,自己抛出异常,自己捕获处理。
     * 2、通过throws在方法声明出抛出异常类型--谁调用谁处理--调用者可以自己处理,也可以继续上抛。
     * */
    public static void testAge() {
            try {       
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new Exception("年龄小于18或者大于80,必须有亲友陪同");
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void testAge2() throws HotelAgeException    {
                System.out.println("请输入年龄:");
                Scanner sc = new Scanner(System.in);
                int age = sc.nextInt();
                if(age<18 || age>80) {
                    throw new HotelAgeException();
                }else {
                    System.out.println("欢迎光临本酒店~~~");
                }
        }
        
    
}

你可能感兴趣的:(Java 常用工具类--Java异常)