我不明白,为什么java要把异常分为运行时异常和一般异常,机制上,我知道运行时异常可以不用捕获,也只有在运行时才可能发生。其它异常必须在编译前就要显示地捕获一下可是为什么要这么硬性的规定呢?哪位大牛给解释一下啊?

解决方案 »

  1.   

    因为这样能够减少编程人员的负担,比如当一个数组越界的时候,程序员往往是不知道的,所以也就不知道该不该加异常处理。在Java里,索性就不加,运行时jvm会抛出这类异常,然后程序员再根据异常信息去调试程序。
      

  2.   

    这问题有意思呢。。想想两种不同的异常看是不是为了骗JAVA编译器喽。。
      

  3.   

    非常感谢你
    三楼四楼可以做个明确的解释么
    我再疑惑,比方说FileNotFoundException吧,为什么不把它做成runtime的呢?或者说java本可以把他做成runtimeexception的,这样我们就不用每次读一个文件的时候去捕获这样的一个异常,恕在下基础不牢,我看不出FileNotFoundException和数组越界异常在本质上有什么不同
      

  4.   

    这么说吧 一般runtime的error都是程序内部的错误,而非runtime的error则多是外部错误。所以jvm可以帮助程序员处理runtime的error,而非runtime的error则要程序员自己去捕获处理了。