try {

} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}与 try {

} catch (Exception e) {
}有什么区别啊!

解决方案 »

  1.   

    try { } catch (NamingException e) { 
    e.printStackTrace(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } 先catch NamingException,再catch SQLException ,可得到更详细的信息
      

  2.   

    try { } catch (Exception e) { 
    } 有什么区别啊不管什么exception都catch出来try { } catch (NamingException e) { 
    e.printStackTrace(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 

    则只catch  NamingException  和  SQLException 
      

  3.   


    如果出现其他的异常,我可以再加上,关键是这2种方式是不是在系统消耗上有什么区别,
    不然所有的异常我们都用catch (Exception e) 来获取算了!
      

  4.   

    如果不需要对异常进行处理的,只是写写日志的话,那没啥区别。当然了 Exception 比
    那两个异常范围广,甚至还能捕获到运行期的异常,比如空指针、数组越界什么的。如果需要进行处理,比如在 JNDI 获得数据源异常时会抛出 NamingException 异常,
    这时我们可以在这个 catch 块中尝试其他的方法,比如从另一个 JNDI 树,或者是其
    他地方获得。在 SQLException 中呢,我们可以处理一些 SQL 的异常。如果只捕获 Exception 的话,那在有异常时要判断是 NamingException 还是 SQLException 呢,
    这时就会很麻烦,因为我们得根据不同的异常作出不同的处理。
      

  5.   


    想明白了,谢谢!
    其实关键的差别在于catch中可以针对不同的异常做不同的异常操作,而Exception就还需要我们人工判断出的具体是什么异常,然后才能做异常操作!
    谢谢!
      

  6.   

    1.NamingException、SQLException都是Exception的子类
    2.抛出NamingException和SQLException时你可以做不同的处理
      

  7.   

    catch是从内到外一层一层捕获的  范围也应该是从窄到宽