zoukankan      html  css  js  c++  java
  • 非受检异常(运行时异常)和受检异常的区别等

      java中的异常和错误都继承自java.lang.Throwable

      这个类有两个直接的子类Error和Exception。

      这次主要记录Exception的相关信息,在异常处理的时候,都会接触到受检异常(checked exception)和非受检异常(unchecked exception)这两种异常类型。非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。两种类型的异常在作用上并没有差别,唯一的差别就在于使用受检异常时的合法性要在编译时刻由编译器来检查。正因为如此,受检异常在使用的时候需要比非受检异常更多的代码来避免编译错误。

      RuntimeException

      RuntimeException在默认情况下会得到自动处理。所以通常用不着捕获RuntimeException,但在自己的封装里,也许仍然要选择抛出一部分RuntimeException。

      RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException的任何子类都无需在throws子句中进行声明。(java api)

      以下是uncheckedExcepiton。

      Java.lang.ArithmeticException

      Java.lang.ArrayStoreExcetpion

      Java.lang.ClassCastException

      Java.lang.EnumConstantNotPresentException

      Java.lang.IllegalArgumentException

      Java.lang.IllegalThreadStateException

      Java.lang.NumberFormatException

      Java.lang.IllegalMonitorStateException

      Java.lang.IllegalStateException

      Java.lang.IndexOutOfBoundsException

      Java.lang.ArrayIndexOutOfBoundsException

      Java.lang.StringIndexOutOfBoundsException

      Java.lang.NegativeArraySizeException’

      Java.lang.NullPointerException

      Java.lang.SecurityException

      Java.lang.TypeNotPresentException

      Java.lang.UnsupprotedOperationException

    CheckedException

      除了runtimeException以外的异常,都属于checkedException,它们都在java.lang库内部定义。Java编译器要求程序必须捕获或声明抛出这种异常。

    一个方法必须通过throws语句在方法的声明部分说明它可能抛出但并未捕获的所有checkedException。

      Java.lang.ClassNotFoundException

      Java.lang.CloneNotSupportedException

      Java.lang.IllegalAccessException

      Java.lang.InterruptedException

      Java.lang.NoSuchFieldException

      Java.lang.NoSuchMetodException

       一直以来,关于在程序中到底是该使用受检异常还是非受检

    异常,开发者之间一直存在着争议,毕竟两类异常都各有优缺点。受检异常的特点在于它强制要求开发人员在代码中进行显式的声明和捕获,否则就会产生编译错误。这种限制从好的方面来说,可以防止开发人员意外地忽略某些出错的情况,因为编译器不允许出现未被处理的受检异常;从不好的方面来说,受检异常对程序中的设计提出了更高的要求。不恰当地使用受检异常,会使代码中充斥着大量没有实际作用、只是为了通过编译而添加的代码。而非受检异常的特点是,如果不捕获异常,不会产生编译错误,异常会在运行时刻才被抛出。

      非受检异常的好处是可以去掉一些不需要的异常处理代码,而不好之处是开发人员可能忽略某些应该处理的异常。一个典型的例子是把字符串转换成数字时会发生java.lang.NumberFormatException异常,忽略该异常可能导致一个错误的输入就造成整个程序退出。

      目前的主流意见是,最好优先使用非受检异常。

      转自:http://blog.csdn.net/nlznlz/article/details/53271045

  • 相关阅读:
    二维树状数组的区间加减及查询 tyvj 1716 上帝造题的七分钟
    hdu5399
    WebLogicSSL解决苹果IOS itms下载问题
    怎样封装RESTful Web Service
    ie8下面版本号(包含ie8)的浏览器不支持html5标签属性解决方式(Modernizr 2.6.2插件的使用)
    在Linux平台使用VNC连接树莓派
    合作开发——设计阶段
    HDU-1165-Eddy's research II
    Iocomp控件教程之LinearGauge--线性刻度尺控件
    VB中的排序问题 15个
  • 原文地址:https://www.cnblogs.com/jimoer/p/6432542.html
Copyright © 2011-2022 走看看