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

简介: /* * java不可能对所有的情况都考虑到,所以,在实际的开发中,我们可能需要自定义异常类。 * 而我们自己随意的写一个类,是不能作为自定义异常类来看待的,要想你的类能是一个自定义的异常类,就必须继承自Exception类或者RuntimeException类。

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

示例代码如下:

 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  }
自定义异常类
 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 }
Teacher.java
 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。
*/

示例代码如下:

 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 }

 

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
5月前
|
前端开发 Java 测试技术
JavaSE碎碎念:记录一次异常测试和一些个人的浅显理解
JavaSE碎碎念:记录一次异常测试和一些个人的浅显理解
|
3月前
|
测试技术
接口测试测试用例编写注意事项
接口测试测试用例编写注意事项
|
5月前
|
Java 数据库连接 Maven
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
38 1
|
5月前
|
Web App开发 人工智能 测试技术
软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”
软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”
63 0
|
6月前
|
测试技术
【测试平台系列】第一章手撸压力机(三)自定义http请求
今天继续深入往下讲,上一篇咱们对http的客户端设置进行了结构化统一,现在咱们开始对http请求进行结构化统一,首先咱们梳理http请求包含的结构。
|
6月前
|
测试技术 Go
【测试平台系列】第一章手撸压力机(二)自定义http客户端配置
上一节简单实现了http发送get请求的客户端,但是在实际工作中,我们会对客户端有各种的设置,也会有各种的请求。
【测试平台系列】第一章手撸压力机(二)自定义http客户端配置
|
8月前
|
测试技术
一个 ABAP Development Tool 自定义 service endpoint 的测试工具
一个 ABAP Development Tool 自定义 service endpoint 的测试工具
41 0
|
10月前
|
数据库
【测试一】——研发自测相关注意事项
该文档针对媒资4.1相关接口的两轮测试结果进行了抽象汇总,针对于研发自测相关项提供了具体的自测依据。
|
10月前
|
算法 安全 Java
【算法与数据结构】3 知行合一,线性查找的自定义类测试
【算法与数据结构】3 知行合一,线性查找的自定义类测试
|
11月前
|
存储 测试技术
性能测试(11)——用户自定义变量
起的名称需要注意是要见名知意,因为后面参数化的时候需要引用此名称 变量的值代表该名称引用的值,类似hashmap,以key,value形式存储 描述可写可不写,建议写上,不然数据多的时候,一个个去猜,很麻烦
61 0

热门文章

最新文章