异常

2016-10-14  本文已影响0人  jimi_jin

异常体系

异常的继承关系是Throwable-->error/Exception-->RunTimeException/ otherException:

异常体系.png

Throwable 分为Error错误和Exception异常两种,Exception又分为:RunTimeException运行时异常 和 除了RunTimeException以外的所有继承自Exception的类。RunTimeException又叫做非强制捕获型异常,什么意思呢,就像玩滑板车,你带不带护具全看心情,大不了摔一跤,并不强制要求,在运行时有可能会抛出异常,导致程序崩溃。这类异常往往继承了RunTimeException或者RunTimeException本身。除了RunTimeException的所有继承自Exception的兄弟类都属于强制捕获型异常,就好比蹦极,如果你不做一些防护措施,比如栓根绳在腰上,主办方是不会让你去送死的。这类异常在编译的时候就会告诉你要想运行此程序,请先做好异常处理。


异常处理又分为两种:try /catch (自行处理异常) 和 Throws(抛给调用者去处理,如果调用者也不想处理,就再往上级抛,直到抛给最顶层,比如main方法等,在这一层级,如果继续往上抛,仍旧是没有问题的,交给JVM处理,但是jvm懒得理你,这异常相当于没有处理)。

自定义异常

自定义异常分为两种,正如上面提到的,根据继承关系来确定是运行时异常(继承自RunTimeException)还是非运行时异常(继承自Exception或者Exception的非RunTimeException的子类)。定义方式如下:

运行时异常定义
public class NameNullPointereException extends RuntimeException{

}
Paste_Image.png

如果要想带参数,那需要重写构造方法

public class NameNullPointereException extends RuntimeException{
 public NameEmptyException() {
   }

   public NameEmptyException(String s) {
       super(s);

   }
}
Paste_Image.png
非运行时异常定义

二者只是继承上的区别,继承自Exception即可。需要注意的是调用时,必throws 或者 try/catch。

上一篇下一篇

猜你喜欢

热点阅读