被问及为什么要有try-catch。回答为是为了捕获异常。然后他就问为什么要捕获异常。我就一下子懵了,从没想过这个问题然后草草的回家就说有些问题java虚拟机在编译器不会发现有异常,只有在执行期才会发现,所以需要程序员自己去捕获。不知道这个说的对不对。大家帮帮忙吧,先谢过

解决方案 »

  1.   

    其实程序,说到底,就是人的思维的反应,人的生活中为啥有强烈的,防患于未然意识,也正是这种意识,在程序中体现出来就是所谓的try,catch.
      

  2.   

    捕获异常的原因有很多种,列举如下:
    1、重写的方法没有throws受检异常,如果重写的时候遇到受检异常必须捕获,然后做相应处理,如重写Runnable的run
    2、将异常转换为用户友好的信息。比如捕获到数据库异常后,重新抛出一个信息让常人易懂的异常
    3、记录日志,即在catch里记录异常相关日志
    4、如果出现的异常对外不重要且自己能处理,那么在catch中处理。比如转换某个配置文件的配置为int,结果转换失败,使用默认值。
    5、作为业务逻辑的一部分(极不推荐)
    6、一些重试操作里需要捕获异常,比如某个操作若失败,可重试3次,在循环中要捕获可能的异常以避免无法重试。
    7、一些可以swallow的异常。比如实现一个closeConnectionQuietly,关闭ResultSet,Statement和Connection,如果调用它们的close出现异常,打算不去管它,就要catch掉它们。但一般会记录日志。诸如此类,等等等等
      

  3.   

    异常分为两种:
    1、RuntimeException
    2、Exception
    对于RuntimeException就像是你开车时路上的小沙子,对于开车小沙子不会对开车造成什么影响,没有必要先要把沙子打扫干净再开车。所以没有不要捕获。
    对于Exception,就像是在山间开车时山上掉下来的石头,我们没有能力阻止,但是对于这种意外,我们应该进行考虑(进行捕处理获)。