2011-12-20 47 views
1

的方法。当我有这样的方法:我怎么调用包含异常处理程序

public XmlParser() throws XmlPullParserException, IOException 
{ 
    ...do some stuff... 
} 

如何调用该方法?

我试着这样做:

XmlParser xmlparse = new XmlParser(); 

,但我得到一个未处理的异常类型为IOException错误。

感谢

回答

3

由于为XmlParser构造函数声明,它throws XmlPullParserException, IOException,那么你需要做的在你的代码下面的东西之一。

你的第一选择是捕捉那些异常直接在您的代码:

XmlParser xmlparse; 

try { 
    xmlparse = new XmlParser(); 
} catch (XmlPullParserException e) { 
    // handle... 
} catch (IOException e) { 
    // handle... 
} 

或者,你可以声明任何一种方法你包括在此,它也throws XmlPullParserException, IOException此代码。

最后,您可以捕获其中一个异常并传递另一个异常。假设您正在编写myMethod

public void myMethod() throws IOException { 
    XmlParser xmlparse; 

    try { 
     xmlparse = new XmlParser(); 
    } catch (XmlPullParserException e) { 
     // handle... 
    } 
} 
+0

我尝试了第一个选项,并且突出显示“e”表示“重复的字段异常”。我猜是因为它看到2“e”的? – SkyeBoniwell 2011-12-21 16:29:23

+1

我不认为是这样;每个'e'应该是特定于封闭块...除非在try/catch之外另外声明了名为'e'的局部变量。无论哪种方式,上面的代码都是未经测试的,但应该足够接近以使您能够到达需要的地方...... – Mike 2011-12-21 16:37:07

1

你有尝试捕捉围绕着它:

try{ 
XmlParser xmlparse = new XmlParser(); 
} catch (XmlPullParserException e) { 
} catch (IOException) { 
} 

不要忘了正确处理异常。

+1

这应该是'catch(IOException e)'。 – 2011-12-20 21:01:01

3

可以使用try/catch块或throws子句。如果你要处理它

try/catch

try { 
    XmlParser xmlparse = new XmlParser(); 
} catch(XmlPullParserException ex) { 
    // handler code 
} catch(IOException ex) { 
    // handler code 
} 

throws如果你正在做的一个方法中,并希望该方法的调用者来处理它:

public void yourMethod() throws XmlPullParserException, IOException { 

    XmlParser xmlparse = new XmlParser(); 
    //... 
1

你必须做一定要抓住例外:

.... 
try { 
    XmlParser xmlparse = new XmlParser(); 
} catch (XmlPuillParserException e) { 
    // do something 
} catch (IOException e) { 
    // do something 
} 
1
try{ 
    XmlParser xmlparse = new XmlParser(); 
}catch(XmlPuillParserException e){ 
    //do something useful 
} 
catch(IOException e){ 
    //do something useful 
} 

或者,而不是IOException异常和XmlPuillParserException,你可以使用异常,但它的坏作风