Java中的自定义异常---第三篇(什么情况下需要自定义异常以及如何去自定义)

前两篇:对Java中的异常的认识和分析(共三篇--异常认识和异常处理及自定义异常,此为一)-CSDN博客

Java中的异常处理---第二篇(共三篇,原理+具体实现和细节)-CSDN博客

非常建议读者去浏览一下,看完能让你对Java异常原理和如何去处理异常以及什么情况下用,有一个更好的理解,还是那句话,能不能清晰的给面试官阐述是一个关键!

好了,接下来是我们这篇文章的主旨---自定义异常。

自定义异常是什么?什么时候我们需要自定义异常?

Java中对于一些常见的异常都做了相应的异常类,譬如,空指针异常,算术异常等等,但难免有些异常是没有包含进来的,这个时候就需要我们自己去定义异常,不过这种情况其实是非常少的,我们更需要的是更加详细并且符合项目需求的异常信息,而并非像Java中那样去打印堆栈信息。因此与其说是自定义异常,不如说个性化异常信息更好一些。

如何去自定义一个异常?

首先我们去自定义一个类,并继承Exception类或者RunTimeException类,有什么区别呢?

如果你继承的是Exception,那么该异常属于编译异常(在编译阶段就生效,不理解请看前面的文章),继承RunTimeException类,该异常属于运行时异常,在程序运行时生效。一般我们来说都是继承RunTimeException类,编写运行时异常类。

//年龄异常类
class AgeException extends RuntimeException {
    public AgeException(String message) {//构造器
        super(message);
    }
}
//测试年龄异常类
public class CustomException {
    public static void main(String[] args) /*throws AgeException*/ {
        int age = 180;
        //要求范围在 18 – 120 之间,否则抛出一个自定义异常
        if(!(age >= 18 && age <= 120)) {
        //这里我们可以通过构造器,设置信息
        throw new AgeException("年龄需要在 18~120 之间");
    }
    System.out.println("你的年龄范围正确.");
    }
}

以上就是自定义异常类的内容,这部分比较简单,看过我前面文章的应该没什么问题,只要知道定义的规则和语法就没什么问题了,Java中的异常这部分就更完了,感谢各位的关注和点赞。

顺手点个赞和关注喔!非常感谢!会一直更新Java中的相关内容的!

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 的异常机制不仅提供了许多现成的异常类供我们使用,还允许我们自定义异常类来满足特定的需求。自定义异常需要继承自 `Exception` 或其子类,并实现相应的构造方法和其他方法。 下面是一个自定义异常类的示例: ``` public class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); } } ``` 在上面的示例,我们定义了一个名为 `MyException` 的自定义异常类,该类继承自 `Exception` 类。我们实现了四个构造方法,分别对应不同的异常情况。其,`String message` 参数表示异常的详细信息,`Throwable cause` 参数表示引发异常的原因。 在实际开发,我们可以根据具体的需求来设计自己的异常类。例如,如果我们在编写一个文件读取工具类时,需要在文件不存在的情况下抛出一个自定义异常,那么可以定义一个名为 `FileNotExistException` 的异常类,并在其实现相应的构造方法和其他方法。 下面是一个 `FileNotExistException` 自定义异常类的示例: ``` public class FileNotExistException extends Exception { public FileNotExistException() { super("文件不存在!"); } public FileNotExistException(String message) { super(message); } public FileNotExistException(String fileName, Throwable cause) { super("文件 " + fileName + " 不存在!", cause); } } ``` 在上面的示例,我们定义了一个名为 `FileNotExistException` 的自定义异常类,该类继承自 `Exception` 类。我们实现了三个构造方法,分别对应不同的异常情况。其,第一个构造方法表示文件不存在的默认异常信息,第二个构造方法允许自定义异常信息,第三个构造方法在文件不存在的基础上添加了引起异常的原因。 使用自定义异常类时,我们可以在需要抛出异常的地方使用 `throw` 关键字抛出自定义异常的实例,例如: ``` public void readFile(String fileName) throws FileNotExistException { File file = new File(fileName); if (!file.exists()) { throw new FileNotExistException(fileName); } // 读取文件内容 } ``` 在上面的示例,我们在文件不存在的情况下抛出了一个 `FileNotExistException` 异常的实例,由调用该方法的上层代码进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值