10

プログラミングに不慣れな私は、特定の種類のエラーを具体的にキャッチし、コードをその種類のエラーのみに結び付けることができることを知りました。

私は主題を研究してきましたが、構文がよくわかりません。

catch (InvalidCastException e) 
 {
 }

が処理されているエラーの種類であることは理解していInvalidCastExceptionますが、それが何でeあるかはわかりません。

誰かがこれを説明してもらえますか?

4

10 に答える 10

19

がなかったとしeます。例外のメッセージをどのように取得しますか?

名前e(またはその他の名前) は、例外オブジェクトのハンドルを取得して、そこから情報を抽出できるようにするためにあります。

名前を与えないのは正当な構文です:

catch (InvalidCastException) //legal C#

これは機能しますが、エラーの種類以外は何もわかりません。

于 2012-12-28T17:33:19.157 に答える
16

e、例外に固有のデータを保持するオブジェクトです。さまざまな種類の例外を調べてみると、それらはすべて異なる種類のデータを持っていることがわかります。多くはそうではありませんが、多くはそうであり、一般的なエラーを取得するのではなく、何が起こったのかを正確に特定するのに役立ちます。

たとえば、 は、通常のオブジェクトには存在しないNotFiniteNumberExceptionという追加のプロパティを定義します。これにより、何が起こったのかを正確に把握するために必要な追加データが提供されます。OffendingNumberException

于 2012-12-28T17:32:05.247 に答える
6

"e"例外を呼び出すことにしたものは何でもです。あなたがするように

string name = "...";

また

int total = 8;

ここstringint、この例の と はデータ型です (あなたの場合、データ型は ですInvalidCastException) 一方、 " name" と " total" は変数名で、あなたの場合は単に " e" です。

于 2012-12-28T17:32:23.330 に答える
5

'e'単なる変数名です。読みやすい場合は、'ex'それを呼び出すことができます。'exception'しかし、構文'e'の 'i' のように単なる規則ですfor i = 0...

于 2012-12-28T17:32:15.670 に答える
4

eInvalidCastExceptionのインスタンスが配置される変数です。try次に、そのオブジェクトのプロパティを表示して、ブロック内のコードによってスローされたエラーの原因を正確に理解するのに役立てることができます。

于 2012-12-28T17:33:50.487 に答える
4

「InvalidCastException」は型で、e はこの型のオブジェクトです。オブジェクトを使用すると、そのオブジェクトに対してメンバー関数を呼び出すことができます。例えば

catch (InvalidCastException e) {
    ...
    e.printErrorMessage();
    ... 
}
于 2012-12-28T17:35:00.560 に答える
3

eキャッチされた例外の詳細を格納する例外オブジェクトへの参照です。詳細には、例外MessageInnerExceptionオブジェクトなどが含まれる場合があります。

于 2012-12-28T17:32:45.240 に答える
2

e は InvalidCastException タイプのインスタンスです。catch ブロックでは、たとえば Debug.Write(e.ToString()) と言うことができます。

于 2012-12-28T17:34:17.083 に答える
2

e変数名です。など、好きな名前を付けることができますexception

于 2012-12-28T17:32:01.710 に答える
2

e例外を保持する変数なので、次のようなことができるようe.messageになりました

于 2012-12-28T17:32:46.813 に答える