0

例えば

try
{
    Application.Exit();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
    //throw;
}

これは一般的な例外です。どちらをいつ使用するかを知る方法は?

4

3 に答える 3

0

プログラムで構造化例外処理 (SEH) を使用したい。

まず、3 種類のエラーが存在することに注意する必要があります。

  • プログラム エラー
  • ユーザーエラー
  • 例外

そのため、例外が作成される可能性がある状況では、C# で SEH を使用する必要がありますが、プログラムの実行中にコードを実行することはできません。メソッドの作成中に、メソッドが要求されたタスクを実行できない状況を回避するためにメソッドを作成する場合は、例外を設定する必要があります。このプロセスでは、2 つの主要なポイントに注意する必要があります ( Rihterが彼の本の 1 つに書いているように)。

まず、作成できる例外のタイプを理解する必要があります。このタイプは非常に慎重に選択する必要があります。この目的のために、FCL (Framework Class Library) の既存のタイプのいずれかを使用できますが、独自のタイプの例外が必要な場合は、そのような状況になることがあります。たとえば、Input-Otput クラスを使用する場合は、次の例外タイプのいずれかを使用できます - System.IO.DirectoryNotFoundException, System.IO.DriveNotFoundException, System.IO.EndOfStreamException, System.IO.FileLoadException, System.IO.FileNotFoundException, System.IO.PathTooLongException, System.IO.PipeException.

次に、例外コンストラクターに送信するメッセージを選択する必要があります。メソッドから詳細情報を見つけることができなければならないことを意味します - この例外が作成された時期と理由。

また、例外を作成するには、次のシャブロンを使用できます

void SomeMEthod (){
try 
{
    //your code to do
}
catch (ExceptionType1) //here put code with Exception 1
{
// you can add some specific code here for working with your exception
}
catch (ExceptionType2) //here put code with Exception 2
{
// you can add some specific code here for working with your exception
}
catch (EXCEPTION) //here put code with rest types of Exception
{
// you can add some specific code here for working with your exception
}
finally
{
//here put code that allow you to free your resourses
//NOTE: this code will be launched always!
}
//here you can placed code, that will be launched if no Exception will be found
}

また、 andを含めるEXCEPTION必要があることに注意してください。これにより、階層を使用して例外をキャッチできます。そうしないと、すべての例外がキャッチされます。ExceptionType2ExceptionType1ExceptionType2ExceptionType1EXCEPTION

thowまた、ブロックにキーワードを追加することもできますcatch-既存の例外との二重作業のために

catch (EXCEPTION) //here put code with rest types of Exception
{
// you can add some specific code here for working with your exception
throw;
}

また、例外をキャッチするためにコードを使用する場合は、それが可能であることを知っていることを理解する必要があります。だからあなたはそれを取り除くために何かを作ることができます. try-catch-funallyブロックの数がプログラムに必要な量とまったく同じになるように、コードを作成する必要があります。

C# の例外クラスの詳細については、こちらを参照してください。

于 2013-11-14T17:33:02.297 に答える