为什么要自定义异常

为什么要自定义异常?


自定义异常是为了设置异常链的起点。一般情况下,我们都是允许每个程序员看到所有的异常信息,这个时候大多数都是把下一层的异常直接重掷到上一层。然而在多层次的结构中,我们有时候需要隐藏底层异常(这种异常的信息很多,很枯燥) ,而给消费者提供一个更为直观的异常,这个时候我们需要自定义异常。有的异常类jdk已经给我们提供,比如常用的IllegalArgumentException。如果你想在此再作包装,你可以创建自己的异常类。如此,消费者将以此异常作为异常链的起点。


为什么要重掷异常?


重掷异常是处理异常的一种方式。在捕获了某种异常后,用户可能不希望在这一层做出裁决,或者即使做出了一定的处理,但仍然需要向上一层报告,因此需要重掷异常。

 

异常机制


一旦某个点发生异常,这个点下面和catch语句之间的代码将不会被执行。因此,异常是一种中止流程的很有效的机制。关于异常,在effective java中提到“异常转译”和“异常连接”的概念。本人倾向于用“异常转译”,前提是要配置log4j,并作详细的日志纪录。

任务描述 相关知识 自定义异常 使用自定义异常 编程要求 测试说明 任务描述 本关任务:定义和使用自定义异常。 相关知识 为了完成本关任务,你需要掌握: 1.为什么自定义异常; 2.怎么使用自定义异常自定义异常 前面谈到的都是系统自带的异常,但是如果我们是在开发一个复杂项目,就经常会遇到系统自带的异常不能满足我们的需求的情况,所以这个时候就需要我们自己来定义异常了。 使用自定义异常 我们一般使用继承Exception类的方式来自定义异常,那具体怎么进行呢? 很简单,我们只需要继承Exception,再将信息传递给父类就可以了: class 自定义异常名 extends Exception{ //因为Exception已经实现了很多异常处理的方法了属性了, //所以自定义异常只需要将信息传递给父类(使用super关键字)即可 } 一个简单的自定义异常: 输出:我是自定义异常 这样就实现了一个自定义异常的定义和使用啦。 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: 定义一个自定义异常,判断用户名是否小于三位,如果用户名小于三位,就抛出一个自定义异常。 测试说明 补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 输入: admin 输出: 用户名格式正确 输入: ab 输出: Exception in thread "main" step4.MyException: 用户名小于三位Exception at step4.Task.main(Task.java:13) 注意:因为抛出异常时会显示行号,请在13行抛出异常,否则评测可能不通过。 开始你的任务吧,祝你成功!package step4; import java.util.Scanner; public class Task { /********* Begin *********/ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String username = sc.next(); //判断用户名 } } class MyException /********* End *********/
最新发布
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值