メイン メソッドを try-catch にラップすることで表示される可能性のある例外メッセージをユーザーが返送できるようにする必要がありますが、これにより、Visual Studio の例外ウィンドウではなく、そのカスタム メッセージを表示することも強制されます。
そのため、VS の場合はラップされていないメソッドを実行し、そうでない場合はラップされたメソッドを実行するために、なんらかの前処理ディレクティブを使用する必要があります。
メイン メソッドを try-catch にラップすることで表示される可能性のある例外メッセージをユーザーが返送できるようにする必要がありますが、これにより、Visual Studio の例外ウィンドウではなく、そのカスタム メッセージを表示することも強制されます。
そのため、VS の場合はラップされていないメソッドを実行し、そうでない場合はラップされたメソッドを実行するために、なんらかの前処理ディレクティブを使用する必要があります。
main(){
try {
// your app code here
}
catch (Exception ex){
if(System.Diagnostics.Debugger.IsAttached)
{
throw;
} else {
// your exception handling here.
}
}
Tetsujin no Oniが提案したように、System.Diagnostics.Debugger.IsAttached
このブール属性がtrueを返す場合は、Visual Studio IDE(または他のデバッガー!)がプロセスにアタッチされます。この場合、VisualStudioで実行していると想定します。
前処理ディレクティブを使用する必要はありません —if
ステートメントでアタッチされたデバッガーをチェックすることで実行できます。
static void Main(string[] args)
{
if (System.Diagnostics.Debugger.IsAttached)
{
/* application code */
}
else
try
{
/* application code */
}
catch (Exception ex)
{
// custom exception handling
}
}