如果这个Exception继承于java.lang.RuntimeException就不需要try catch,因为这是运行时错误,一般来说这样的Exception只要保证输入是正确的,运行时不会出错,出错的原因都是运行时传入了不合法的数据所致其它的Exception和Error如果能处理的话就try catch,如果程序对该例外无法预料或无法处理的话,可以将例外继续向外抛出

解决方案 »

  1.   

    Exception是在正常运行时可能抛出的异常。在一个完整的程序中应当被截获或者声明。
    比如接受用户输入的数字并做除法运算。在正常运行时用户有可能输入一个不合法的数据,所以此时可以抛出Exception,同时应当声明或截获此异常。RuntimeException是在正常运行是不可能抛出的异常。所以不需要截获或声明。
    比如加载一个配置文件。在正常运行时如果由于某些原因,此文件被损坏或者丢失了,那么可以抛出RuntimeException,强迫整个程序终止运行。
    设想一下,如果发现打开配置文件失败时抛出一个Exception。那么即使上级模块截获了此异常又能干什么呢?因为无法正确读取配置信息,整个程序依旧无法运行下去,只能打印错误信息并退出,这和不截获异常的结果是一样的。一般来说:如果程序运行时抛出了RuntimeException,那么就应当修正程序中的bug或者检查运行环境。
      

  2.   

    噢,我大概明白了。如果某个Exception是继承RuntimeException的子类,则不必try...catch都可以。如果不是,则必须要try...catch。明白。我想过两年再结贴,让更多的人发表一下见解先。