在java中,所有的异常都有一个共同的父类 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。
Java异常特点:
Java异常特点:
1)Java异常处理是面向对象处理方式
2) 一旦代码出现异常问题,JVM底层则会创建一个异常类相关的对象
3)异常对象产生后,会根据代码对异常的处理机制进行操作,其中异常处理机制包括捕获异常和抛出异常两种, 如果没有异常操作,则java程序会中断执行
Throwable 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
1)Exception(异常)是应用程序中可能的可预测的问题。异常一般是在特定环境下产生的,通常出现在代码的特定方法和操作中。
例如: 你对一个null对象进行操作就会产生空指针异常。
Object obj = new Object();
你要知道obj是一个Object指针变量,指向Object类的一个实例,我们说obj是一个对象,是=实质是它指向一个对象的首地址,如果这个指针变量obj没有指向任何空间,你调用他的方法和属性就会出问题。
Object obj = new Object();
obj.equals("123");
这个是没错的,但换成下面的语句
Object obj = null;
obj.equals("123");
就会出现空指针异常
2)Exception(异常)又能被分为两类
受检异常(非运行时异常)与非受检异常(运行时异常)的异常处理方法:
受检异常:在编译时被强制检查的异常称为“受检异常”。即在方法的声明中声明的异常
处理方法:1.使用try..catch..finally进行捕获
try{
//可能出现异常的代码部分
}catch(异常类型 异常变量){
//执行异常操作
}catch(异常类型 异常变量){
//执行异常操作
}…
finally{
//处理完try与catch操作后的收尾操作,异常出口
}
2.在产生异常的方法声明后面写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去。
public void test() throws Exception{
//存在异常的代码块
}
非受检异常:在方法的声明中没有声明,但在方法的运行过程中发生的各种异常被称为“非受检异常”不要求一定要把它捕捉或继续抛出
throw抛出异常对象注意:
1、throw一般存在于catch语句当中,用于出现异常后的一种操作方式
2、捕捉的异常和抛出的异常不一定相同,可以不一样
3、throw抛出的异常对象如果是检测异常,则所在的方法必须要通过throws显性抛出
4、throw抛出的异常对象如果是非检测异常,则方法上可以选择性定义throws
自己也可以自定义出一个类来拓展Exception类
格式如下:
public class 自定义异常类名 extends Exception{
}