2011-12-20 18 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,你可以使用異常,但它的壞作風