6

Visual Studio のメソッドによってスローされたすべての例外をキャッチするために必要なコードを生成するためのオプションまたは拡張機能があるかどうか知っていますか?

たとえば、私は電話していますFile.WriteAllBytes(...)

そのメソッドは、System.ArgumentException、System.ArgumentNullException などの 9 つの例外をスローできます。

9 つの例外すべてのコードが必要です。

catch (ArgumentException) {

}
catch (ArgumentNullException) {

}
...

Eclipse for Java でこの動作を見たことがありますが、Visual Studio にも似たようなものがあるのではないかと思います。

ところで、私はVisual Studio 2012 Premiumを使用しています

4

2 に答える 2

14

Visual Studio にはこのようなものはありません。

throws主な問題は、Java とは異なり、C# は句のようなものをサポートしていないことです。そのため、メソッドが発生させる可能性のある例外を直接知る方法はありません。このツールは、C# には存在しない言語機能を中心に構築されています。

Anders Hejlsbergは、このインタビューでこの決定について詳しく説明しています。

そうは言っても、C# では通常、これらの例外をすべて明示的にキャッチする必要はありません。適切に処理できる例外のみをキャッチする必要があります。目的を記録するためにすべての例外をキャッチしたい場合は、catch (Exception e)特定の例外タイプの後にシングルを使用するだけで、他のすべての例外がキャッチされます。

于 2013-10-10T17:36:21.960 に答える
3

C# は Java ではありません。メソッドによってスローされたすべての例外をキャッチする必要がないだけでなく、それは非常に悪い考えでもあります。

処理する必要がある例外のみをキャッチする必要があります。特定の例外に対して特に何もする必要がない場合は、呼び出し元にバブルアップさせます。呼び出し元には、何かする必要がある可能性があります。またはそうではないかもしれません。

于 2013-10-10T17:34:32.837 に答える