6
static void Main(string[] args)
{
    try
    {
        Console.WriteLine("No Error");
    }
    catch (DataException) /*why no compilation error in this line?*/
    {
        Console.WriteLine("Error....");
    }
    Console.ReadKey();
}

コードはエラーなしでコンパイルされています。catch ブロックの最初の行でコンパイル エラーが発生しない理由がわかりません -

キャッチ (DataException)

catch ブロックの DataException パラメータはクラスであり、次のような変数が必要です。

キャッチ (DataException d)

誰かが上記の動作を説明できますか?

4

3 に答える 3

2

あなたが現在書いている方法は、タイプDataExceptionの例外がスローされるときに、この catch ブロックを処理する必要があることをコンパイラーに伝えていることを意味します。そして、あなたが書いた方法では、後でアクセスするために例外が保存されている変数はありません。

通常、1 行のコード (行のブロックでさえありません) は、複数の種類の例外をスローできます。例外の種類ごとに異なる処理が必要です。

于 2015-09-15T02:11:22.973 に答える