基本概念:
    当程序中出现某些错误,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。
    自定义异常的步骤:

    1. 定义类:自定义异常类名(程序员自己写)继承Exception或RuntimeException
    2. 如果继承Exception,属于编译异常
    3. 如果继承RuntimeException,属于运行异常(一般来说,继承RuntimeException)

    案例:
    当我们接收Person对象年龄时,要求范围在18-120之间,否则抛出一个自定义异常(要求继承RuntimeException),并给出提示信息。

    1. package test;
    2. public class Main {
    3. public static void main(String[] args) /*throws AgeException*/ {
    4. int age = 180;
    5. //要求范围在 18 – 120 之间,否则抛出一个自定义异常
    6. if(!(age >= 18 && age <= 120)) {
    7. //这里我们可以通过构造器,设置信息
    8. throw new AgeException("年龄需要在 18~120之间");
    9. }
    10. System.out.println("你的年龄范围正确.");
    11. }
    12. }
    13. //自定义一个异常
    14. //1. 一般情况下,我们自定义异常是继承 RuntimeException
    15. //2. 即把自定义异常做成 运行时异常,好处是,我们可以使用默认的处理机制
    16. //3. 即比较方便
    17. class AgeException extends RuntimeException {
    18. public AgeException(String message) {//构造器
    19. super(message);
    20. }
    21. }

    image.png