java自定义异常

   自定义异常:如果想定义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);// 调用父类的带参数的构造器
	    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值