Java_73_常见异常分类_异常简单处理

异常分类

JDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例。例如内置的异常类不能够满足需要,还可以创建自己的异常类。

Error

Error类层次描述了Java运行时系统内部错误和资源耗尽错误。这类错误是我们无法控制的,同时也是非常罕见的错误,所以在编程中,不去处理这类错误。

Error表明系统JVM已经处于不可恢复的崩溃状态中。我们不需要管他。

打开JDK的:java.lang.error,查看他的所有子类。

Error和Exception的区别:

我开着车走在路上,一头猪冲在路中间,我刹车。这叫一个异常。

我开着车在路上,发动机坏了,我停车,这叫错误。系统处于不可恢复的崩溃状态。发动机什么时候坏?我们普通司机能管吗?不能。发动机什么时候坏是汽车厂发动机制造商的事。

Exception

所有异常类的父类,其子类对应了各种各样可能出现的异常事件。

RuntimeException(uncheckedException)

出现RuntimeException就一定是你的问题,可以不捕获,因为小心点这些异常是可以避免的。派生于RuntimeException的异常。是一类特殊的异常,如被0除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。这类异常通常是由编程错误导致的,因为只有小心点,这些异常都是可以避免的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,所有这类异常都继承自java.lang.RuntimeException.

注意:RuntimeException这个名字很容易让人产生错误影响。事实上,我们这里讨论的所有Error、Exception都是运行时发生的。

常见的有:

1.ArithmeticException

如试图除以0

if(b!=0){

int i=1/b;

}else{

System.out.println("不能用0做除数!!");

}

2.NullPointerException

当程序访问一个空对象的成员变量或方法,访问一个空数组的成员时发生。怎么处理?

//TestException te=null;

TestException te=new TestException();

if(te!=null){

te.test1(2);

}

3.ClassCastException

类型转化异常

void test2(Object obj){

if(obj instanceof Man){ //判断是不是这个类的实例

Man man=(Man) obj;

}

}

4.ArrayIndexOutOfBoundsException

访问的元素下标超过数组长度

int[] a={1,2,3}

int idx=3;

if(idx<=a.length-1){

System.out.println(a[idx]);

}

5.NumberFormatException

数字格式异常!

String str="1234abcf";

Integer i=new Integer(str);

//Integer i2=Integer.parseInt(str);

6.CheckedException:

所有不是RuntimeException的异常,统称为CheckedException,又被称为“已检查异常”。这类异常的产生不是程序本身的问题,通常由外界因素造成的。为了预防这些异常产生时,造成程序的中断或得到不正确的结果,Java要求编写可能产生这类异常的程序代码时,一定要去做异常的处理。

7.要打开的文件不存在。

编译器将检查是否所有已检查异常提供异常处理。

这一类异常,我们必须捕获进行处理。

Java语言将派生于RuntimeException类或Error类的所有异常称为“未检查异常”。

**uncheckedException是未检查,checkedException是已检查**

public static void main(String[] args){

int i=1/0;//未检查,需要手动处理,自动抛出异常uncheckedException***这样的异常太频繁

try{

Thread.sleep(3000);//已检查,手动抛出异常checkedException

}catch(InterruptedException e){

e.printStackTrace();

}

}

发布了136 篇原创文章 · 获赞 11 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/pmcasp/article/details/88068351