七叶笔记 » Java » Error 和 Exception 的区别?

Error 和 Exception 的区别?

image.png


Error 和 Exception 都是Throwable的子类, 在java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型.

1,Exception 和 Error体现了java平台设计者对不同异常情况的分类, Exception是程序正常运行中,可以预料的意外情况,可以被捕获,进行相应的处理.

2.Error 是指正常情况下,不大可能出现的情况,绝大部分的Error 都会导致程序处于非正常的,不可恢复的状态, 不需要捕获, 常见的OutOfMemoryError 是Error的子类.

3.Exception 分为可检查异常(checked) 和 不可检查异常(unchecked).可检查异常在源代码里必须显式的进行捕获处理,这是编译期检查的一部分,不可检查异常是指运行时异常, 比如NullPointerException, ArrayIndexOutOfBoundsException之类, 通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求.

2.Java中的异常处理关键字是什么?

(1). throw:有时我们显式地想要创建一个异常对象,然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。

(2). throws:当我们在一个方法中抛出任何选中的异常而不处理它时,我们需要在方法签名中使用throws关键字来让调用程序知道该方法可能抛出的异常。调用者方法可以处理这些异常,或者使用throws关键字将它们传播到调用者方法。我们可以在throws子句中提供多个异常,它也可以与main()方法一起使用。

(3). try-catch:我们在代码中使用try-catch块来处理异常。try是块的开始,catch在try块的末尾处理异常。我们可以用try来创建多个catch块,也可以嵌套try catch块。catch块需要类型为Exception的参数。

(4). finally:finally块是可选的,只能与try-catch块一起使用。由于异常会停止执行过程,因此我们可能会打开一些资源,而这些资源不会关闭,因此我们可以使用finally块。无论是否发生异常,finally块始终执行。

3.常见的检查异常 和 非检查异常?

(1) 非检查异常:

ArrayIndexOutOfBoundsException //用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引

ArithmeticException //当出现异常的运算条件时,抛出此异常。( 例如,一个整数“除以零”时,抛出此类的一个实例)

IllegaArguementException //抛出的异常表明向方法传递了一个不合法或不正确的参数

NullPointerException //空指针异常(调用 null 对象的实例方法等)

ClassCastException //类转换异常

ArrayStoreException //数据存储异常,操作数组时类型不一致

(2) 检查异常

ClassNotFoundException // 找不到具有指定名称的类的定义

DataFormatException //数据格式异常

IOException //输入输出异常

SQLException //提供有关数据库访问错误或其他错误的信息的异常

FileNotFoundException //当试图打开指定路径名表示的文件失败时,抛出此异常

EOFException //当输入过程中意外到达文件或流的末尾时,抛出此异常

相关文章