2016-12-14 11 views
1

私はC#で、例外を明示的に定義するメソッドを必要としないことを知っています。しかし、呼び出し元メソッドが呼び出し先メソッドによってスローされる可能性のある例外を処理したいシナリオを、どのように処理するのかを知りたいですか?呼び出し元メソッドは、呼び出し先メソッドによってスローされている例外をどのように知っていますか?

私の質問ではっきりさせてください。

期待しresult.Butは、どのように私は可能性が何であるかを知っているとして、それが返すどのような知識をどのような方法で、私が持っている呼び出し元と今
public string DoSomething() 
{ 
    // This method do something and returns a string 
} 

としてDLLファイルで定義された方法があるとしこのメソッドによってスローされた例外。

私たちはというキーワードを持っています。私はJavaで同じメソッドを定義した場合それでは、私は

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

以下のようなものを行っている可能性があり、このメソッドのこの方法で発信者は、例外が彼らの側で処理する必要があるかを知っています。

C#ではがメソッドシグネチャにキーワードをスローしていないので、これをC#でどのように実現できますか?

可能な方法は、汎用例外オブジェクトをキャッチすることです。しかし、一般的な例外をもう一度キャッチすることは、例外を処理する恐ろしい方法です。

+1

いつでもXmlコメントを使用して、このmehtodがスローするすべての例外をリストすることができます。この方法で、インテリセンスのために入力中にそれを見ることができるでしょう –

+1

Javaの場合でも、ポケモンの例外処理を使用して1日と呼ぶだけではありません。いずれにしても、呼び出し側が合理的に対処できる例外がどの例外をスローするのかを理解する必要があり、常に人間の解釈が必要です。 –

+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ラインを取得することができます。

関連する問題