使用Java创建自己的异常子类
2017-12-25 14:48
239 查看
Java知多少(53)使用Java创建自己的异常子类
尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。
方法 | 描述 |
---|---|
Throwable fillInStackTrace( ) | 返回一个包含完整堆栈轨迹的Throwable对象,该对象可能被再次引发。 |
String getLocalizedMessage( ) | 返回一个异常的局部描述 |
String getMessage( ) | 返回一个异常的描述 |
void printStackTrace( ) | 显示堆栈轨迹 |
void printStackTrace(PrintStreamstream) | 把堆栈轨迹送到指定的流 |
void printStackTrace(PrintWriterstream) | 把堆栈轨迹送到指定的流 |
String toString( ) | 返回一个包含异常描述的String对象。当输出一个Throwable对象时,该方法被println( )调用 |
1 // This program creates a custom exception type. 2 class MyException extends Exception { 3 private int detail; 4 MyException(int a) { 5 detail = a; 6 } 7 8 public String toString() { 9 return "MyException[" + detail + "]"; 10 } 11 } 12 13 class ExceptionDemo { 14 static void compute(int a) throws MyException { 15 System.out.println("Called compute(" + a + ")"); 16 if(a > 10) 17 throw new MyException(a); 18 System.out.println("Normal exit"); 19 } 20 21 public static void main(String args[]) { 22 try { 23 compute(1); 24 compute(20); 25 } catch (MyException e) { 26 System.out.println("Caught " + e); 27 } 28 } 29 }
该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法抛出一个MyException对象。当compute( )的整型参数比10大时该异常被引发。
main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:
Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]
系列文章:
Java知多少(上)
Java知多少(中)
分类: Java
标签: Java
好文要顶 关注我 收藏该文
Coda
关注 - 1
粉丝 - 329
+加关注
0
« 上一篇:Java知多少(52)内置异常
» 下一篇:Java知多少(54)断言详解
相关文章推荐
- java入门教程-6.11使用Java创建自己的异常子类
- 使用Java创建自己的异常子类
- Java知多少(53)使用Java创建自己的异常子类
- 使用Java创建自己的异常子类
- 创建自己的循环Queue底层使用数组java版
- .“在JAVA中,异常子类必须在它们任何父类之前使用,因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,后面运行子类的catch语句将永远不会到达。而且,Java中不能到达的代码是一个错误。”
- 创建自己Stack底层使用链表java版本
- maven使用mvn命令创建项目异常java.lang.NoClassDefFoundError: org/apache/commons/collections/ExtendedProperties
- 【Java面试题】42 TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- IDEA 使用Gradle构建项目后没有src文件,自己新建后不能创建Java文件的解决办法
- HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成异常: java.sql.SQLException: Error while processing statement: null
- Java异常处理、异常处理使用的一些注意点(例如,基类和子类捕获的顺序问题)
- 详解Java的内置异常以及创建自定义异常子类的方法
- 使用Atlas创建自己的Client Control
- java创建和使用日期
- 使用 XForms 创建您自己的数独游戏,第 1 部分: 创建游戏
- 使用VS2008进行VSTO-Addin实战开发-创建自己的工具栏(二)
- 使用VS2008进行VSTO-Addin实战开发-创建自己的菜单(一)
- NHibernate使用时,不能返回自己的异常的解决办法