09異常処理
C#を含むすべて.NET Framework言語は.NETのシステム.Exceptionクラスベース
Exceptionが発生してプログラムが処理されていない場合、crashは終了します.
try、catch、finallyキーを使用してExceptionを制御
throwキーワードからExceptionを生成し、親呼び出し元に例外処理を渡すことができます.
1)catchが渡すExceptionオブジェクトthrow
exの異常情報を保持する利点があるが、Stack Trace情報をリセットすると、throw文以前のcallスタック情報が失われるため、使用は推奨されない
2)新しいExceptionオブジェクトを作成して投げ出す
例外情報を保存するには、catchで取得したExceptionオブジェクトを新しいオブジェクトのInnerExceptionに含める必要があります.
3) only throw
catch文で取得した例外を親呼び出し元にそのまま転送する(rethrow)
Exceptionが発生してプログラムが処理されていない場合、crashは終了します.
try, catch, finally
try、catch、finallyキーを使用してExceptionを制御
try
{
// 실행 문장들
}
catch (ArgumentException ex)
{
// Argument 예외처리
}
catch (AccessViolationException ex)
{
// AccessViolation 예외처리
}
finally
{
// 마지막에 반드시 실행
}
throw
throwキーワードからExceptionを生成し、親呼び出し元に例外処理を渡すことができます.
catch文でthrowを使用する3つの場合
1)catchが渡すExceptionオブジェクトthrow
throw ex;
CAtch(Exception ex)から渡されたexを直接投げ出すexの異常情報を保持する利点があるが、Stack Trace情報をリセットすると、throw文以前のcallスタック情報が失われるため、使用は推奨されない
2)新しいExceptionオブジェクトを作成して投げ出す
throw new MyException(msg, ex);
C#のnewキーワードWrapping catchで取得したExceptionを使用して、新しいExceptionオブジェクトを作成例外情報を保存するには、catchで取得したExceptionオブジェクトを新しいオブジェクトのInnerExceptionに含める必要があります.
3) only throw
throw;
Exceptionオブジェクトを使用せずにthrowのみを使用catch文で取得した例外を親呼び出し元にそのまま転送する(rethrow)
例外処理例
try
{
// 실행 문장들
Step1();
Step2();
Step3();
}
catch(IndexOutOfRangeException ex)
{
// 새로운 Exception 생성하여 throw
throw new MyException("Invalid index", ex);
}
catch(FileNotFoundException ex)
{
bool success = Log(ex);
if (!success)
{
// 기존 Exception을 throw
throw ex;
}
}
catch(Exception ex)
{
Log(ex);
// 발생된 Exception을 그대로 호출자에 전달
throw;
}
ソース:http://www.csharpstudy.com/Reference
この問題について(09異常処理), 我々は、より多くの情報をここで見つけました https://velog.io/@vencott/09-예외처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol