Java自定义异常类

情景:年龄在[0-150]之间不抛出异常,除此之外抛出异常。

  1、定义异常类

package com.work1;

public class AgeException extends Exception{//编译异常
    // 有两个构造方法,一个无参,一个带有错误信息的参数
    public AgeException() {
    }
    public AgeException(String message) {
        super(message);
    }
}

2、相关类抛出异常

package com.work1;

public class People {
    public void checkAge(int age) throws AgeException { //throws AgeException 表示调用该方法可能会抛出异常
        if(age<0 || age>150){
            //抛出异常,注意是throw而不是throws
            //throw new AgeException();//无参构造方法,报错时不输出错误信息。
            throw new AgeException("年龄需在[0-150]之间!"); //有参构造方法,报错时输出错误信息。
        }else{
            System.out.println("年龄合法!");
        }
    }
}

3、测试相关类

package com.work1;

import java.util.Scanner;

public class PeopleTest {
    调用checkAge可能会抛出异常,使用trows捕获异常
    public static void main(String[] args) throws AgeException { 
        Scanner sc = new Scanner(System.in);
        System.out.println("输入用户年龄:");
        int age = sc.nextInt();
        People p = new People();
        p.checkAge(age);
    }
}
package com.work1;

import java.util.Scanner;

public class PeopleTest { 

    public static void main(String[] args){ 
        Scanner sc = new Scanner(System.in);
        System.out.println("输入用户年龄:");
        int age = sc.nextInt();
        People p = new People();
        // 使用 try catch 捕获异常并可以进行异常处理
        try {
            p.checkAge(age);
        }catch (AgeException e){
            e.printStackTrace();
            // 异常处理...
        }

    }
}

        以上throws 、 try...catch... 两种不同的异常处理方法,其中throws只进行抛出异常,不进行异常处理;以上便是自定义三步骤,下面对异常基础知识进行补充。

4、异常相关基础知识

è¿éåå¾çæè¿°

         异常与错误都继承自Throwable类,编译异常与运行时异常都继承自Exception类;运行时异常(非受检异常)都是RuntimeException类及其子类异常;其他异常都是编译异常(受检异常),都属于Exception类及其子类,必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义运行时异常。编译异常简单判断就是写代码时出现红线,需要try   catch或者throws时处理的异常,运行时异常是测试时抛出的异常这句话不对,编译异常使用try...catch...也可以编译不报错,运行报错,例如我们定义的年龄异常类。编译器提示的异常一定是编译异常,但是运行时报错的异常可能是运行时异常也可能是编译异常。

Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM   (Java虚拟机)出现的问题。例如。Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需要的内存资源时,将出现  OutOfMemoryError  。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

你可能感兴趣的:(Java,基础与框架整合,java,自定义异常,java自定义异常,运行时异常与编译异常,异常处理)