zoukankan      html  css  js  c++  java
  • CheckException和RuntimeException

    java文档中对RuntimeException的定义是:

    RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

    可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

    java中Exception分为两类,一类是CheckException一类是UncheckException。并且java的Error都属于UncheckedException。

    一、CheckException和UnCheckException的区别:

      1、在编译的时候,java编译器会强制你处理CheckException,处理的方式有两种:一种是抛出异常;另一种是捕获异常(常见的有ClassNotFoundException等)。而对于UncheckException编译去则不需要你做任何处理,只是在运行时出现了该类异常,则会被抛出(常见的有:NullPointException,ArrayIndexOutofBoundException等)。

      2、Checked exception用来指示一种调用方能够直接处理的异常情况。而Runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。

    二、是否应该对RuntimeException处理

    总而言之,在程序的运行过程中一个checked exception被抛出的时候,只有能够适当处理这个异常的调用方才应该用try/catch来捕获它。而对于runtime exception,则不应当在程序中捕获它。如果你要捕获它的话,你就会冒这样一个风险:程序代码的错误(bug)被掩盖在运行当中无法被察觉。因为在 程序测试过程中,系统打印出来的调用堆栈路径(StackTrace)往往使你更快找到并修改代码中的错误。有些程序员建议捕获runtime exception并纪录在log中,我反对这样做。这样做的坏处是你必须通过浏览log来找出问题,而用来测试程序的测试系统(比如Unit Test)却无法直接捕获问题并报告出来。

      在程序中捕获runtime exception还会带来更多的问题:要捕获哪些runtime exception?什么时候捕获?runtime exception是不需要声明的,你怎样知道有没有runtime exception要捕获?你想看到在程序中每一次调用方法时,都使用try/catch程序块吗?

  • 相关阅读:
    js 比较日期的大小
    日历(从今天起后面的14天)
    数字转大写
    object对象进行深拷贝
    浏览器渲染机制
    t-5.倒计时(秒杀效果)--本地--服务器(待续)
    s-1.rem自适应
    t-3.跑马灯
    t-2.手机端简单轮播(无滑动效果)
    16.弹性布局
  • 原文地址:https://www.cnblogs.com/fsh1542115262/p/3933712.html
Copyright © 2011-2022 走看看