24

Java に相当する C# は何Throwableですか?

Java では、例外クラス階層のルートはThrowableではなく Exceptionと呼ばれます。基本クラスには、Throwable次の 2 つの派生クラスがあります。

Exception: 合理的なアプリケーションがキャッチしたい条件の場合。

Error: 合理的なプログラムがキャッチしようとすべきではない重大な問題の場合。

したがって、Throwable基本クラスには、合理的なプログラムがキャッチしようとすべきではない問題が含まれています。

4

2 に答える 2

22

それがException クラスです。.NET の例外以外に、個別の「スロー可能な」概念はありません。

于 2013-07-03T19:31:14.840 に答える
1

.Net ではあらゆるクラスの例外が許可されますが、C# では throw と catch が Exception に制限されます。タイプも変数も指定しない catch 節を使用して、例外以外の例外をキャッチします。

関連する仕様の抜粋:

catch 句でクラス型を指定する場合、型は System.Exception から派生した型、または System.Exception (またはそのサブクラス) を有効な基本クラスとして持つ型パラメーター型である必要があります。

catch 句でクラス型と識別子の両方を指定すると、指定された名前と型の例外変数が宣言されます。例外変数は、catch ブロックに及ぶスコープを持つローカル変数に対応します。catch ブロックの実行中、例外変数は現在処理中の例外を表します。明確な割り当てのチェックのために、例外変数はそのスコープ全体で確実に割り当てられていると見なされます。

catch 句に例外変数名が含まれていない限り、catch ブロック内の例外オブジェクトにアクセスすることはできません。

例外の種類も例外変数名も指定しないcatch句を汎用catch句と呼びます。try ステートメントには、一般的な catch 句を 1 つだけ含めることができます。1 つ存在する場合は、最後の catch 句にする必要があります。

一部のプログラミング言語は、System.Exception から派生したオブジェクトとして表現できない例外をサポートする場合がありますが、そのような例外は C# コードでは生成できません。一般的な catch 句を使用して、そのような例外をキャッチできます。したがって、一般的な catch 句は、型 System.Exception を指定するものとは意味的に異なります。前者は、他の言語からの例外もキャッチする可能性があります。

.Net 4.0 では、Java の Error クラスに似た概念が導入されています。Corrupted State Exceptions は Exception を拡張しますが、HandleProcessCorruptedStateExceptionsAttributeを持つメソッドのみがCSE をキャッチします。

于 2014-09-28T13:22:24.133 に答える