2016-12-14 93 views
1

我知道在C#中,我們不需要方法來顯式定義它可能拋出的方法簽名中的異常。但是,我想知道如何處理調用方法想要處理被調用方法引發的可能異常的場景?調用方法如何知道被調用方法拋出哪些異常?

讓我明確我的問題。

假設有一個DLL文件中定義爲

public string DoSomething() 
{ 
    // This method do something and returns a string 
} 

現在作爲主叫的方法我有什麼方法希望它返回一個result.But我怎麼知道什麼是可能的哪些知識此方法拋出的異常。

在jave中我們有拋出關鍵字。所以,如果我在java中定義相同的方法,然後我可以做類似下面

public String doSomething() throws SomeException { 
    // do something 
    throw new SomeException(); 
} 

這這種方法來調用者知道例外需要的東西就在自己身邊來處理。

我們如何在C#中實現這一點,因爲C#沒有在方法簽名中拋出關鍵字

一種可能的方法是捕獲一個通用的異常對象。但是再次捕捉一個通用異常是處理異常的一種可怕方式。

+1

您可以隨時使用Xml註釋並列出這個mehtod拋出的所有異常。通過這種方式,您可以在因爲智能感知而輸入時看到 –

+1

即使使用Java,您也不只是使用Pokemon異常處理,並且每天都會這樣處理。無論哪種方式,您都需要了解調用方可以理性處理哪些異常,並且這總是需要人爲解釋。 –

+0

@Damien_The_Unbeliever是的,但在java中,如果被調用方法重新拋出統一或自定義異常(對於此方法處理的所有異常),調用方必須只關心該異常。 但是在C#中,即使調用者知道要處理什麼,因爲方法簽名沒有給出任何東西。 除了m.rogalski和user3185569提供的答案之外,還有其他方法可以實現嗎?儘管應有的尊重,但作爲一名Java開發人員,它並沒有說服我在一些XML文件中定義我的方法拋出的所有異常。 – amanraj

回答

1

還有就是XML文檔中的一個部分,專門用於這一目的:

/// <summary> 
/// Does something 
/// </summary> 
/// <exception cref="System.OutOfMemoryException"></exception> 
/// <returns></returns> 
public string DoSomething() 
{ 
    // This method do something and returns a string 
} 

這使得API的設計師到什麼例外,從這個方法調用預期客戶提供信息。就像這樣:

enter image description here

你可以通過點擊上面的/三次當光標上面的方法產生這些XML行。

相關問題