自定义异常:如果想定义Checked异常那么该自定义异常类需要继承Exception类,如
果想定义Runtime异常。定义异常类时通常需要提供两个构造器,一个是无参数的构造器,
另一个是带有参数的构造器(该参数一般为字符串类型,这个字符串将作为该异常对象的描
述信息)。
例如:
//测试
public class Test {
/*
* java认为Checked异常都是可以被处理(修复)的异常,所以java程序
* 必须显示处理Checked异常,否则编译时就会发生错误无法通过编译。
* 注意:第一句和第二句代码都是直接抛出了一个Checked异常,而Checked
* 异常都必须显示处理即使用try...catch...处理或者将异常通过throws抛
* 出由调用者处理。由于这里是直接抛出Checked异常,所以不能使用try...
* catch...处理,因为你抛出了一个异常,又自己处理掉了,和没抛异常没有
* 区别,即没有异常,所以在这里使用try...catch...是没有意义的,即不能
* 使用try...catch...又要显示处理掉异常,所以这里使用了throws将异常
* 抛出,由调用者处理
*/
public static void main(String[] args) throws MyCheckedException {
//throw new MyCheckedException();
//结果一:
/*
* Exception in thread "main" com.demo.test.MyCheckedException
* at com.demo.test.Test.main(Test.java:17)
*/
//throw new MyCheckedException("自定义Checked异常");
//结果二:
/*
* Exception in thread "main" com.demo.test.MyCheckedException:
* 自定义Chcecked 异常 at com.demo.test.Test.main(Test.java:18)
*/
//throw new MyRuntimeException();
//结果三:
/*
* Exception in thread "main" com.demo.test.MyRuntimeException:
* at com.demo.test.Test.main(Test.java:19)
*/
//throw new MyRuntimeException("自定义Runtime异常");
//结果四:
/*
* Exception in thread "main" com.demo.test.MyRuntimeException:
* 自定义Runtime 异常 at com.demo.test.Test.main(Test.java:20)
*/
}
}
//自定义Checked异常
class MyCheckedException extends Exception {
public String msg = "";
public MyCheckedException() {
super();// 调用父类的无参数的构造器
}
public MyCheckedException(String msg) {
super(msg);// 调用父类的带参数的构造器
}
}
//自定义Runtime异常
class MyRuntimeException extends RuntimeException {
public String msg = "";
public MyRuntimeException() {
super();// 调用父类的无参数的构造器
}
public MyRuntimeException(String msg) {
super(msg);// 调用父类的带参数的构造器
}
}
java自定义异常
最新推荐文章于 2024-04-23 18:52:22 发布