`
zhangxiong0301
  • 浏览: 353698 次
社区版块
存档分类
最新评论

RuntimeException与CheckedException

    博客分类:
  • JAVA
 
阅读更多

 

 

 

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中Checked Exception与Runtime Exception 的区别的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下

    Java中Error与Exception的区别.doc

    Java中Error与Exception的区别 Java 中的 Error 和 Exception 是两个不同的概念,它们都是 Throwable 的子类,但它们之间存在着许多不同之处。 首先, Error 类和 Exception 类都继承自 Throwable 类,这一点是...

    Java精华(免费版)

    另外,method3()本身并不会抛出exception,可是它却声明会抛出CheckedException。在向你解释之前,让我们先来看看这个类的main()方法:   public static void main( String[] args )   {   ...

    Java语言程序设计基础篇课后题答案-Chapter17ExceptionsandAssertions.pdf

    本资源对Java语言程序设计基础篇的Chapter 17 Exceptions and Assertions进行了详细的解释和知识点总结,涵盖了Java异常类的继承结构、claiming exceptions、checked exception和unchecked exception、throw语句和...

    wanglijun93#AndroidNote#Java中Error和Exception2

    2. 运行时异常(RuntimeException) 3. 被检查的异常(Checked Exception) 1.增强程序堆内存的处理效率 2.设置缓存大小

    基础深化和提高-异常机制

    Java中的异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。已检查异常需要在方法签名中声明或者通过try-catch块进行捕获和处理,否则编译器会报错。未检查异常通常是RuntimeException...

    php中error与exception的区别及应用

    Error都是unchecked类型 Exception分为checked 与 unchecked类型 且把异常与错误都当作程序运行不正常的现象来看待 如果区分异常与错误的话: 异常:非致命的。try{}catche(Exception e){} 执行中的try模块是测试...

    【Java】自定义异常和异常中的方法覆盖注意事项

    文章目录1. 自定义异常1.1 定义方式...备注:受查异常CheckedException和运行时异常RuntimeException的定义方式没有区别。 // 受查异常 (编译前,就必须处理的异常,需要throws声明传递出去) class SexMismatchExcepti

    java中异常的笔试题-java_interview_questions:发表于https://sathish2905.github.io/j

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMa

    java面试题笔试题-java-interview-questions:1000多个Java面试问题

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。未检查异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMac

    同花顺java面试笔试题-java-interview-questions:java面试题

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMa

    同花顺java面试笔试题-Java-Interview:面试问题和程序

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMa

    同花顺java面试笔试题-Interview-Questions:Java面试问题

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMa

    同花顺java面试笔试题-java-interview-:java-面试-

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualMa

    同花顺java面试笔试题-JSInterviewQuestions:JS面试题

    ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException 等。Unchecked 异常在编译时不检查,但在运行时检查。 3. 错误:错误是不可恢复的,例如 OutOfMemoryError、VirtualM

    java多线程编程之捕获子线程异常示例

    java多线程程序中所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。但是无法避免的是unchecked exception,也就是RuntimeException,当抛出异常时子线程...

    Android 捕获运行时异常详解

    Android 异常分为两类:CheckedException 和 UnCheckedException CheckException:在编译代码时就需要进行try()catch捕获的。 UnCheckException:所有的运行时异常,RuntimeException类和他的子类,都是在APP运行...

    java异常处理试题及答案.doc

    * Java 中有两种类型的异常:Checked Exception 和 Unchecked Exception。 二、Java 异常处理的关键字 * throw:用于抛出异常。 * catch:用于捕捉异常。 * finally:用于执行资源释放或其他必要的操作。 * try:...

    java EE学习总结 第六周(包含思维导图)

    第六周 Day26 异常 异常的概念 异常在运行过程中出现特殊的情况 异常处理的必要性:任何程序都可能...CheckedException:受查异常,必须处理 异常 的产生 自动抛出异常:当程序值在运行时遇到不规范的代码或结果时,会

Global site tag (gtag.js) - Google Analytics