.NET 3.5 CFアプリケーションを開発しましたが、いくつかのlibコードでスローされた、未処理の例外が原因でアプリケーションがクラッシュすることがあります。
アプリケーションが終了し、標準のアプリケーションポップアップ例外メッセージボックスが表示されます。
未処理の例外をすべてキャッチする方法はありますか?または、少なくとも、メッセージボックスからテキストをキャッチします。ほとんどのお客様はデバイスを再起動するだけなので、例外メッセージボックスを確認することはできません。
何か案は?
.NET 3.5 CFアプリケーションを開発しましたが、いくつかのlibコードでスローされた、未処理の例外が原因でアプリケーションがクラッシュすることがあります。
アプリケーションが終了し、標準のアプリケーションポップアップ例外メッセージボックスが表示されます。
未処理の例外をすべてキャッチする方法はありますか?または、少なくとも、メッセージボックスからテキストをキャッチします。ほとんどのお客様はデバイスを再起動するだけなので、例外メッセージボックスを確認することはできません。
何か案は?
UnhandledExceptionイベントハンドラーを追加しましたか?
[MTAThread]
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
// start your app logic, etc
...
}
static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var exception = (Exception)e.ExceptionObject;
// do something with the info here - log to a file or whatever
MessageBox.Show(exception.Message);
}
私はctackeがするのと同じようなことをします。
private static Form1 objForm;
[MTAThread]
static void Main(string[] args)
{
objForm = new Form1();
try
{
Application.Run(objForm);
} catch (Exception err) {
// do something with the info here - log to a file or whatever
MessageBox.Show(err.Message);
if ((objForm != null) && !objForm.IsDisposed)
{
// do some clean-up of your code
// (i.e. enable MS_SIPBUTTON) before application exits.
}
}
}
おそらく彼は私のテクニックが良いか悪いかについてコメントすることができます。