2014-09-28 81 views
-2

在java中使用特定类时,为什么我似乎被迫为java api中的某些类提供异常处理?异常处理要求

如:

private DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
private DocumentBuilder db; 

    try { 
     db = dbf.newDocumentBuilder(); 
    } catch(Exception e) {} 

可以编译,但是:

private DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
private DocumentBuilder db; 


     db = dbf.newDocumentBuilder(); 

不会。为什么?有人能为我澄清一下吗?我能不能让可能的异常在运行时影响我的程序而不处理它?

回答

2

因为Java已检查异常。这意味着编译器将要求您或者捕获例外,或者宣传您的方法可能会抛出抛出调用的方法可能抛出的异常。

This particular method可以抛出ParserConfigurationException

你不抓住它,但如果你没有,那么你有上做广告的方法这一事实。例如:

private void myMethod() throws ParserConfigurationException 

这告诉消费者代码,它需要准备好潜在地捕获和处理异常。

这是另一个完全不论是否检查异常是件好事的论据。互联网在这个问题上不乏争论。但是,这不是编译器是要关心:)

还要注意的是,虽然这编译

try { 
    db = dbf.newDocumentBuilder(); 
} catch(Exception e) {} 

catch块是名言坏主意。这意味着你是捕获的例外,但你没有意义地处理它。 The two are very different things