Java学习之异常:使用自定义异常

使用自定义异常
这里写图片描述
1. 自定义异常

 1 package cn.javastudy.summary;
 2 
 3 /**
 4  * 自定义的一个异常类MyException,且是从Exception类继承而来
 5  */
 6 public class MyException extends Exception {
 7 
 8     private int id;
 9 
10     /**
11      * 自定义异常类的构造方法
12      * @param message
13      * @param id
14      */
15     public MyException(String message,int id) {
16         super(message);//调用父类Exception的构造方法
17         this.id = id;
18     }
19     
20     /**
21      * 获取异常的代码
22      * @return
23      */
24     public int getId() {
25         return id;
26     }
27     
28 }

2.自定义异常测试

 1 package cn.javastudy.summary;
 2 
 3 import java.text.MessageFormat;
 4 
 5 public class TestMyException {
 6 
 7     //throws MyException,抛出我们自定义的MyException类的异常。
 8     public void regist(int num) throws MyException {
 9         if (num < 0) {
10             //使用throw手动抛出一个MyException类的异常对象。
11             throw new MyException("人数为负值,不合理", 1);
12         }
13         /**
14          * 注意:当我们抛出了异常之后,
15          * System.out.println(MessageFormat.format("登记人数:{0}",num));是不会被执行的。
16          * 抛出异常之后整个方法的调用就结束了。
17          */
18         System.out.println(MessageFormat.format("登记人数:{0}",num));
19     }
20     
21     public void manage() {
22         try {
23             regist(-100);
24         } catch (MyException e) {
25             System.out.println("登记失败,错误码:"+e.getId());
26             e.printStackTrace();
27         }
28         System.out.println("操作结束");
29     }
30     
31     
32     public static void main(String[] args) {
33         TestMyException t = new TestMyException();
34         t.manage();
35     }
36 
37 }

这里写图片描述
异常处理总结
这里写图片描述
养成良好的编程习惯,不要把错误给吞噬掉(即捕获到异常以后又不做出相应处理的做法,这种做法相当于是把错误隐藏起来了,可实际上错误依然还是存在的), 也不要轻易地往外抛错误,能处理的一定要处理,不能处理的一定要往外抛。往外抛的方法有两种,一种是在知道异常的类型以后,方法声明时使用throws把 异常往外抛,另一种是手动往外抛,使用“throw+异常对象”你相当于是把这个异常对象抛出去了,然后在方法的声明写上要抛的那种异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值