Java 异常

异常

就是在运行期间发生不正常的情况。

在java中类的形式对不正常的情况进行了描述和封装对象,描述不正常情况的类,就称为异常类

异常类和正常流程代码分离,提高阅读性。

其实异常就是java通过面向对象的思想将问题封装成了对象。用异常类对其进行描述。

不正常情况分为两类:

一般不可以处理的:Error

可以处理的: Exception

Throwable :无论是error,还是异常,问题,问题发生就应该可以被抛出,让调用者知道并处理。

可抛型指的是什么?如何体现?

throws,throw,凡是可被这两个关键字操作的类都具有可抛型。

该体系的特点:子类的后缀名都是用其父类作为后缀。阅读性很好。

throws 和 throw的区别

1. throws 用在函数上,throw使用在函数内。

2. throws 抛出的是异常类,可以抛出多个,用逗号隔开。 throw抛出的是异常对象。

异常的分类

1.编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。这种问题一旦出现,希望在编译时就检测,让这种问题有对应的处理方式。可以针对性处理。

2. 编译时不检查异常,运行时异常:就是Exception中的RuntimeException和其子类,这种问题的发生,无法让功能继续,运算无法进行。更多的是因为调用者的原因导致的或者引发了内部状态改变导致的。那么这种问题一般不出来,直接编译通过,在运行时,让调用者调用程序时的程序强制停止,让调用者自己对代码进行修正。

异常处理原则

1.函数内容如果抛出需要检测的异常,那么函数上必须声明。否则必须在函数内调用 try catch进行捕捉否则编译失败。

2. 如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。

3.何时try catch 何时throws?

功能内容可以解决,用try catch。解决不了用throws告诉调用者,让调用者解决。

4.一个功能如果抛出了多个异常,那么调用时,必须有对应多个try catch进行针对性的处理,内部有几个需要检测的异常,就抛出几个异常,抛几个catch几个。

异常的注意事项

1.子类在覆盖父类方法时,父类方法如果抛出了异常,那么子类方法只能抛出父类的异常或者该异常的子类。

2.如果父类抛出多个异常,那么子类只能抛出父类异常的子集。

子类覆盖父类只能抛出父类的异常或者子类或者子集。

如果父类没有抛出异常,那么子类绝对不可以抛,只能try catch。

try catch 捕获异常

异常处理的捕捉形式 这是可以对异常进行针对性处理的方式

try{

//需要被检测异常的代码

}catch(异常类变量)    //该变量用于接受异常的对象 {

//处理异常的代码

}finally{

//一定会被执行的代码 }

多catch 父类catch放最下面

你可能感兴趣的:(Java 异常)