自定义的异常处理

1、讲解

因为项目中会出现特有的问题,而这些问题并未被Java所描述并封装对象。或者说,一些在项目需求中是异常,但是对于程序本身并不是异常的,Java自带的Exception类不会对其进行处理,那么就需要我们自己对原有的Exception类进行扩充,成为自定义的异常处理类

异常Exception的父级就是Throwable类了,除了Exception类外,Throwable还有一个子类Error 。注意异常,与错误的区别

编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。


2、使用:

可以像下面这样定义自己的异常类:

classMyException extendsException{}

继承Exception原因:

异常体系有一个特点:因为异常类和异常对象都被抛出。

他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。只有这个体系中的类和对象才可以被throwsthrow操作。

throwsthrow的区别

throws使用在函数上。

throw使用在函数内。

 

throws后面跟的异常类。可以跟多个。用逗号隔开。

throw后跟的是异常对象。


所以若要写需要有抛出异常的方法时:

当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。

要么在内部try catch处理。

要么在函数上声明让调用者处理。(就是在函数声明的地方加上throws)

1、例如加函数声明:

 public static void a() throws MyException {
    //方法内容
    。。。。。
    throw new MyException();
  }

注意函数声明处要声明throws MyException,然后函数内部为throw。

2、例如try-catch:

 
try {
      //函数内容
      ......
      throw new MyException("Originated in b()");
    } catch(MyException e) {
        
    	e.toString();
    }


3、写法:

发现打印的结果中只有异常的名称,却没有异常的信息。

因为自定义的异常并未定义信息。

 

如何定义异常信息呢?

因为父类中已经把异常信息的操作都完成了。

所以子类只要在构造时,将异常信息传递给父类通过super语句。

那么就可以直接通过getMessage方法获取自定义的异常信息。


这部分就是要在自定义异常类中写明。可以写各种各样的异常处理方法,带各种参数的,比如带有String message的,带错误码的等等

// 最基本的一个处理
public MyException(String message)
   {
        super(message);
   }

//带有起因的处理
 public MyException(String message, Throwable cause)
    {
         super(message, cause);
     }


还可以继续写更详细的异常处理函数,super函数自身可以带string,cause参数,如果想要加更多的信息需要自己写函数加进去

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值