Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则称为Checked异常。
只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。
对于Checked异常的处理方式有两种:
(1)当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后对应的catch块中修补该异常。
(2)当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。
Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕捉Runtime异常,也可以使用try...catch块来捕捉Runtime异常。
当使用throw语句自行抛出异常,如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显式捕获该异常,要么放在一个带throws声明的方法中,即把该异常交给该方法的调用者处理;也就是说当出现了(不管是自行抛出的,还是系统抛出的)Checked异常,就要想办法去处理它,不能不理会它,要么显式地在try...catch块里捕获,处理它;要么把它放在一个带throws声明的方法中,把异常交给该方法的调用者处理。
如果throw语句抛出的异常是Runtime异常,则该语句无须放在try块里,也无须放在带throws声明抛出的方法中;程序既可以显式使用try...catch来捕获,并处理异常,也可以完全不处理该异常,把异常交给该方法调用者处理。(http://blog.163.com/quanquan127@126/blog/static/6884772520126394334182/)
ArithmeticException(除数为0的异常), BufferOverflowException(缓冲区上溢异常), BufferUnderflowException(缓冲区下溢异常), IndexOutOfBoundsException(出界异常), NullPointerException(空指针异常), EmptyStackException(空栈异常), IllegalArgumentException(不合法的参数异常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException
1. java.lang.NullPointerException
异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)
2. java.lang.ClassNotFoundException 异常的解释是"指定的类不存在"。
3. java.lang.ArithmeticException 这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常。
4. java.lang.ArrayIndexOutOfBoundsException
异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。
5. java.lang.IllegalArgumentException
这个异常的解释是"方法的参数错误",比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
6. java.lang.IllegalAccessException
这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常
相关推荐
Java 中 Checked Exception 与 Runtime Exception 的区别 Java 中的异常处理机制是 Java 语言的一个重要特色,它允许程序产生例外状况。在学习 Java 时,我们需要了解不同种类的异常的区别。Java 提供了两种异常...
RuntimeException与Checked Exception - **RuntimeException**:这是未检查异常的一种,包括`NullPointerException`(空指针异常)、`IndexOutOfBoundsException`(索引越界异常)等,这些异常是由于程序设计时的...
##### (三) RuntimeException与Checked Exception 1. **RuntimeException**: - **定义**: 运行期异常,是`Exception`的子类,但在很多情况下不需要显式捕获。 - **示例**: 除数为零、数组空指针等。 - **处理**:...
在Java中,`CheckedException`和`RuntimeException`在方法定义与异常声明上的差异显著。`CheckedException`要求任何可能抛出此类异常的方法都必须在其方法签名中明确声明,这意味着调用者在编译时就能知道该方法可能...
在Exception类中,又有两个主要的分支:CheckedException和RuntimeException。CheckedException指的是在编译时期必须显式处理的异常,否则程序无法通过编译。这类异常要求程序员必须使用try/catch块来捕获或者使用...
异常分为两种类型:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 **已检查异常(Checked Exception)** 已检查异常是那些在编译时需要处理的异常。Java强制程序员要么在方法签名中声明...
Java中Error与Exception的区别 Java 中的 Error 和 Exception 是两个不同的概念,它们都是 Throwable 的子类,但它们之间存在着许多不同之处。 首先, Error 类和 Exception 类都继承自 Throwable 类,这一点是...
Exception包括RuntimeException和checked exception两类。RuntimeException是程序本身可以捕获并且可以处理的异常,例如NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException等。checked ...
根据《Effective Java》的建议,对于可以恢复的条件,应该使用`CheckedException`,而对于程序错误或不可恢复的情况,使用`RuntimeException`更为合适。 在处理异常时,如果抛出的是`CheckedException`,调用该方法...
在实际编程中,还有两种特殊的`Exception`类:`RuntimeException`和`Checked Exception`。`RuntimeException`(如`NullPointerException`、`ArrayIndexOutOfBoundsException`)是程序逻辑错误,不强制要求捕获;而`...
在上面的代码中,我们使用try-catch块来捕获checked exception,然后将其封装成RuntimeException以便传递。 四、RethrowException的实现 RethrowException是Java throw Exception实现异常转换的另一个实现方式。它...
异常类(`Exception`)是 `Throwable` 类的一个子类,它又分为两大类:检查性异常(`Checked Exception`)和运行时异常(`Runtime Exception`)。本篇将重点讨论运行时异常及其常见类型。 #### 运行时异常(`...
另外,method3()本身并不会抛出exception,可是它却声明会抛出CheckedException。在向你解释之前,让我们先来看看这个类的main()方法: public static void main( String[] args ) { ...
在Java中,异常可以分为两大类:Checked Exception和Unchecked Exception。Checked Exception是在编译期检查的异常,而Unchecked Exception是在运行时检查的异常。RuntimeException就是一种Unchecked Exception。 ...
本资源对Java语言程序设计基础篇的Chapter 17 Exceptions and Assertions进行了详细的解释和知识点总结,涵盖了Java异常类的继承结构、claiming exceptions、checked exception和unchecked exception、throw语句和...
* Exception、RuntimeException、checked exception 和 unchecked exception * try、catch、finally 语句和 throw、新异常的创建 四、数组和集合 * 数组的定义和使用方法 * Collection、List、Set、Map 等集合接口...
2. 运行时异常(RuntimeException) 3. 被检查的异常(Checked Exception) 1.增强程序堆内存的处理效率 2.设置缓存大小
本文将深入探讨Java异常处理机制,包括异常类层次结构、Checked Exception与Unchecked Exception的区别,以及如何有效地使用try-catch-finally语句块。 首先,Java的异常类层次结构始于`java.lang.Throwable`,它是...