前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义异常的实现和测试以及异常的注意事项

自定义异常的实现和测试以及异常的注意事项

作者头像
黑泽君
发布2018-10-11 14:39:37
1.1K0
发布2018-10-11 14:39:37
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏

/* * java不可能对所有的情况都考虑到,所以,在实际的开发中,我们可能需要自定义异常类。 * 而我们自己随意的写一个类,是不能作为自定义异常类来看待的,要想你的类能是一个自定义的异常类,就必须继承自Exception类或者RuntimeException类。 * * 两种方式: *    A:自定义异常类继承自Exception类         需要检查编译期异常和运行期异常 *    B:自定义异常类继承自RuntimeException类     只需要检查运行期异常 */

示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_08;
 2 
 3 /*
 4  * java不可能对所有的情况都考虑到,所以,在实际的开发中,我们可能需要自定义异常类。
 5  * 而我们自己随意的写一个类,是不能作为自定义异常类来看待的,要想你的类能是一个自定义的异常类,就必须继承自Exception类或者RuntimeException类。
 6  * 
 7  * 两种方式:
 8  *         A:自定义异常类继承自Exception类                需要检查编译期异常和运行期异常
 9  *         B:自定义异常类继承自RuntimeException类        只需要检查运行期异常
10  */
11 
12 // 自定义异常类继承自Exception类
13 //public class MyException extends Exception {
14 //    public MyException() {
15 //        super();
16 //    }
17 //
18 //    public MyException(String message) {
19 //        super(message);
20 //    }
21 //}
22 
23 // 自定义异常类继承自RuntimeException类
24  public class MyException extends RuntimeException {
25     public MyException() {
26         super();
27     }
28 
29     public MyException(String message) {
30         super(message);
31     }
32  }
代码语言:javascript
复制
 1 package cn.itcast_08;
 2 
 3 public class Teacher {
 4     // 针对MyException继承自Exception类
 5 //    public void check(int score) throws MyException {
 6 //        if (score > 100 || score < 0) {
 7 //            throw new MyException("分数必须在0-100之间"); // 编译期异常
 8 //        } else {
 9 //            System.out.println("分数没有问题");
10 //        }
11 //    }
12 
13     // 针对MyException继承自RuntimeException类
14     public void check(int score) {
15         if (score > 100 || score < 0) {
16             throw new MyException("分数必须在0-100之间"); // 运行期异常
17         } else {
18             System.out.println("分数没有问题");
19         }
20     }
21     
22 }
代码语言:javascript
复制
 1 package cn.itcast_08;
 2 
 3 import java.util.Scanner;
 4 
 5 /*
 6  * 自定义异常的测试类
 7  */
 8 public class StudentDemo {
 9     public static void main(String[] args) {
10         Scanner sc = new Scanner(System.in);
11         System.out.println("请输入学生成绩:");
12         int score = sc.nextInt();
13 
14         Teacher t = new Teacher();
15         
16         // 编译期异常测试
17 //        try {
18 //            t.check(score);
19 //        } catch (MyException e) {
20 //            e.printStackTrace();
21 //        }
22         
23         // 运行期异常测试
24         t.check(score);
25     }
26 }

/* * 异常的注意事项: *    A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏) *    B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是父类异常的子集,子类不能抛出父类没有的异常。 *    C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws。 */

示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_09;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 /*
 8  * 异常的注意事项:
 9  *         A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
10  *         B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是父类异常的子集,子类不能抛出父类没有的异常。
11  *         C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws。
12  */
13 public class ExceptionDemo {
14 
15 }
16 
17 class Fu {
18     public void show() throws Exception {
19     }
20 
21     public void method() {
22     }
23 }
24 
25 class Zi extends Fu {
26     @Override
27     public void show() throws ArithmeticException {
28 
29     }
30 
31     @Override
32     public void method() {
33         String s = "2014-11-20";
34         SimpleDateFormat sdf = new SimpleDateFormat();
35         Date d = null; // 局部变量,引用数据类型,需要初始化为null。为什么呢?按理说 d = sdf.parse(s); 这一句就可以初始化了啊?
36         try {    
37             d = sdf.parse(s); // 编译期异常,因为编译的时候,我不知道try里面有什么语句(编译只检查语法),只有运行的时候才知道try里面有什么,如果这句前面有一句抛出异常,则就不会执行到这一句了。d就不能初始化了。
38         } catch (ParseException e) {
39             e.printStackTrace();
40         }
41         
42         System.out.println(d);
43     }
44 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档