自定义的异常处理

来源:互联网 发布:网络消费者投诉来分期 编辑:程序博客网 时间:2024/05/16 01:37

1、讲解

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

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

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

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


2、使用:

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

classMyExceptionextendsException{}

继承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
原创粉丝点击