请帮我看下下面的两个概念有没有问题?(1)异常,就是指程序在运行时出现不正常的情况(2)对于异常:分两种:
     1,编绎时被检测的异常(也就是说这个异常是可以被处理的)
     2,编绎时不被检测的异常(运行时异常,RuntimeException及其子类);既然异常是运行时出现,为什么编译时检测而不是运行时检测呢?
感觉这俩概念好矛盾啊,求解

解决方案 »

  1.   

    http://blog.csdn.net/linhu007/article/details/9624869
      

  2.   


    lz,你说的异常的两种定义,在别的地方看到还比较少!
    你是不是这个意思:
     1,编绎时被检测的异常,如IO、数据库异常等;
     2,编绎时不被检测的异常,如数组越界、空指针等。至于你的疑问“既然异常是运行时出现,为什么编译时检测而不是运行时检测呢?
    这个编译时的检查,是非常有必要的。我们要写出更加健壮的程序,就需要更多的提示:如果能在运行前预知并解决更多的异常,那么程序就会更健壮,因为运行时出现Exception,那就会直接影响生产环境了。
    所以JDK也是朝这个方向走的,像JDK1.5的泛型就是为了多加约束,减少运行时的类型转换异常。
      

  3.   

    Java中异常分两种一种为“检查异常”,既是说这种异常必须显示声明在接口签名中,用户代码被强迫处理这种异常。另一种为“非检查异常”,既是说这种异常不被显示声明在接口签名中,(但是应该被写在java doc里),用户代码可以自行决定是否处理,如果不作处理,则默认继续向上层抛出。======关于“检查异常”,有不少争论,我个人倾向于相信“检查异常”理论上的愿望是好的,实际操作除限制了用户代码灵活度,污染了接口签名,外加被到处滥用之外,没有特别积极的意义。
    另外回答你的问题,对于程序来说,异常都是运行时发生的。