java入门教程-6.11使用Java创建自己的异常子类
来源:互联网 发布:php学生管理系统 编辑:程序博客网 时间:2024/06/07 06:43
尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。
Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。
表 10-3 Throwable 定义的方法 方法 描述 Throwable fillInStackTrace( )返回一个包含完整堆栈轨迹的Throwable对象,该对象可能被再次引发。String getLocalizedMessage( )返回一个异常的局部描述String getMessage( )返回一个异常的描述void printStackTrace( )显示堆栈轨迹void printStackTrace(PrintStreamstream)把堆栈轨迹送到指定的流void printStackTrace(PrintWriterstream)把堆栈轨迹送到指定的流String toString( )返回一个包含异常描述的String对象。当输出一个Throwable对象时,该方法被println( )调用
下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。
// This program creates a custom exception type.
class MyException extends Exception {
private int detail;
MyException(int a) {
detail = a;
}
public String toString() {
return "MyException[" + detail + "]";
}
}
class ExceptionDemo {
static void compute(int a) throws MyException {
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}
public static void main(String args[]) {
try {
compute(1);
compute(20);
} catch (MyException e) {
System.out.println("Caught " + e);
}
}
}
该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法抛出一个MyException对象。当compute( )的整型参数比10大时该异常被引发。
main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:
Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]
Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。
下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。
// This program creates a custom exception type.
class MyException extends Exception {
private int detail;
MyException(int a) {
detail = a;
}
public String toString() {
return "MyException[" + detail + "]";
}
}
class ExceptionDemo {
static void compute(int a) throws MyException {
System.out.println("Called compute(" + a + ")");
if(a > 10)
throw new MyException(a);
System.out.println("Normal exit");
}
public static void main(String args[]) {
try {
compute(1);
compute(20);
} catch (MyException e) {
System.out.println("Caught " + e);
}
}
}
该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法抛出一个MyException对象。当compute( )的整型参数比10大时该异常被引发。
main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:
Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]
0 0
- java入门教程-6.11使用Java创建自己的异常子类
- 使用Java创建自己的异常子类
- 使用Java创建自己的异常子类
- java中如何使用自己创建的异常
- Java中子类抛出异常的规则
- java入门教程-6.10Java的内置异常
- Java异常处理、异常处理使用的一些注意点(例如,基类和子类捕获的顺序问题)
- java异常类子类和父类的关系
- java入门教程-6.3Java未被捕获的异常
- java入门教程-6.7Java throw:异常的抛出
- 创建自己的循环Queue底层使用数组java版
- Java创建子类对象时的内存分配
- Java的原子类
- Java 中构建自己的异常类
- java入门教程-6.1Java异常处理基础
- java入门教程-6.2Java异常类型
- 创建自己的异常类
- Java 的 java.lang 中定义的未检查异常子类
- java入门教程-6.6Java try语句的嵌套
- java入门教程-6.7Java throw:异常的抛出
- java入门教程-6.8Java throws子句
- java入门教程-6.9Java finally
- java入门教程-6.10Java的内置异常
- java入门教程-6.11使用Java创建自己的异常子类
- java入门教程-6.12Java断言
- java入门教程-7.1Java线程的概念
- java入门教程-7.2Java线程模型
- java入门教程-7.3Java主线程
- java入门教程-7.4Java创建线程(Runnable接口和Thread类)
- java入门教程-7.5Java创建多线程
- java入门教程-7.6Java isAlive()和join()的使用
- 暴力枚举法总结