DOBON.NETプログラミング掲示板過去ログ
未処理例外のUnhandleExceptionイベントで
題名: 未処理例外のUnhandleExceptionイベントで
著者: いわっち
日時: 2004/07/12 15:39:34
ID: 4795
この記事の返信元:
(なし)
この記事への返信:
[4928]
Re[1]: 未処理例外のUnhandleExceptionイベントで
管理人
2004/07/20 2:46:18
ツリーを表示
環境/言語:[Windows Xp C# .NET Framework 1.1]
分類:[.NET]
Windowsアプリで
未処理例外のUnhandleExceptionイベントが発生しないケースがあります。
10回実行して1回ぐらいしかエラー用のダイアログが表示させず
イベントも発生しない、画面があるのですが
だれか同じような現象が発生している方は、いないでしょうか。
UnhandleExceptionイベントが発生せず、画面に制御がもどり異常終了
しません。
try文を入れると例外を認識しています。
でも再throwしても、例外とはならず???
以下がソースです。
★★★ main関数にて ★★★
static void Main()
{
//Windowsフォームの未処理例外のハンドル定義
Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionEvent);
// 未処理例外のハンドル定義
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionEvent);
//Windows XP スタイルにする
Application.EnableVisualStyles();
Application.DoEvents();
//アセンブリよりアプリケーション名を取得する
Assembly myAssembly = Assembly.GetEntryAssembly();
AssemblyName myAssemblyName = myAssembly.GetName();
String myAppName = myAssemblyName.Name;
//二重起動を防止する
Mutex myMutex = new Mutex(false,myAppName);
if (myMutex.WaitOne(0,false))
{
// アプリケーションの起動
Application.Run(new frmMenu());
// Mutexを解放
myMutex.ReleaseMutex();
}
myMutex.Close();
}
private static void UnhandledExceptionEvent(object sender, UnhandledExceptionEventArgs e )
{
string msg = "以下の内容を管理者へ連絡して下さい。";
msg += Environment.NewLine;
msg += Environment.NewLine;
msg += ((Exception)e.ExceptionObject).ToString();
// 子例外の編集
Exception inner = ((Exception)e.ExceptionObject).InnerException;
while(inner != null)
{
// メッセージの編集
msg += Environment.NewLine;
msg += inner.ToString();
inner = inner.InnerException;
}
MessageBox.Show(msg,"システム例外");
// アプリケーション終了
Application.Exit();
}
★★ frmNyukin該当画面でビジネスDLL呼び出し ★★
→インプットマン使用
private void fncKey_FunctionKeyPress(object sender, GrapeCity.Win.Input.FunctionKeyPressEventArgs e)
{
//マウスポインタ 待機中(砂時計)
this.Cursor=Cursors.WaitCursor;
//確認(F4)
if (e.Key.Equals(ButtonKeys.F4))
{
//選択患者のデータ抽出
this.Get_spdList(this.spdList_Sheet.ActiveRowIndex);
//ファンクションキーの設定
InputManUtility.FuncKeySetActive(this.fncKey,"fncKeySet2");
}
//実行(F5)
else if(e.Key.Equals(ButtonKeys.F5))
{
//患者テーブル ロック
if ( KanjaT_Lock() )
{
//患者データ作成
NyuKinIchiranView nyukind = NyukinData_Make();
NyuKinBusiness nyukinb = new NyuKinBusiness();
//修正
nyukinb.Update(nyukind); → このビジネスで例外が発生し この箇所にtry文を入れればcatchできるのですが
再throwしてもイベントは発生せず!!
//更新完了メッセージ
MsgBox.MsgOkUpdate();
★★ ビジネスDLL ★★
public void Update(NyuKinIchiranView niv)
{
try
{
// 入院一覧データのチェック
if(niv.ToKaikeiBi == null || niv.ToKaikeiBi == "")
{
throw new ExecuteException("変更先の会計日が未設定です");
→Exceptionクラスを継承した、自作の例外
}
if(niv.ToRyosyuBi == null || niv.ToRyosyuBi == "")
{
throw new ExecuteException("変更先の領収日が未設定です");
}
・
・
catch(Exception e)
// 登録時にエラーが発生した場合
{
// トランザクションロールバック
this._txn.Rollback();
// ExecuteExceptionでシステムエラー
throw new ExecuteException(e);
}
題名: Re[1]: 未処理例外のUnhandleExceptionイベントで
著者: 管理人
URL:
http://dobon.net
日時: 2004/07/20 2:46:18
ID: 4928
この記事の返信元:
[4795]
未処理例外のUnhandleExceptionイベントで
いわっち
2004/07/12 15:39:34
この記事への返信:
(なし)
ツリーを表示
ニュースグループを調べてみると、Windowsフォームアプリケーションの場合は、Application.ThreadExceptionを使った方がよいようです。
.NET 247 : AppDomain.UnhandledException on microsoft.public.dotnet.general
http://www.dotnet247.com/247reference/msgs/11/56026.aspx
.NET 247 : Exception Handling + Winforms on microsoft.public.dotnet.languages.csharp
http://www.dotnet247.com/247reference/msgs/39/195326.aspx
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
Windowsアプリで
未処理例外のUnhandleExceptionイベントが発生しないケースがあります。
10回実行して1回ぐらいしかエラー用のダイアログが表示させず
イベントも発生しない、画面があるのですが
だれか同じような現象が発生している方は、いないでしょうか。
UnhandleExceptionイベントが発生せず、画面に制御がもどり異常終了
しません。
try文を入れると例外を認識しています。
でも再throwしても、例外とはならず???
以下がソースです。
★★★ main関数にて ★★★
static void Main()
{
//Windowsフォームの未処理例外のハンドル定義
Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionEvent);
// 未処理例外のハンドル定義
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionEvent);
//Windows XP スタイルにする
Application.EnableVisualStyles();
Application.DoEvents();
//アセンブリよりアプリケーション名を取得する
Assembly myAssembly = Assembly.GetEntryAssembly();
AssemblyName myAssemblyName = myAssembly.GetName();
String myAppName = myAssemblyName.Name;
//二重起動を防止する
Mutex myMutex = new Mutex(false,myAppName);
if (myMutex.WaitOne(0,false))
{
// アプリケーションの起動
Application.Run(new frmMenu());
// Mutexを解放
myMutex.ReleaseMutex();
}
myMutex.Close();
}
private static void UnhandledExceptionEvent(object sender, UnhandledExceptionEventArgs e )
{
string msg = "以下の内容を管理者へ連絡して下さい。";
msg += Environment.NewLine;
msg += Environment.NewLine;
msg += ((Exception)e.ExceptionObject).ToString();
// 子例外の編集
Exception inner = ((Exception)e.ExceptionObject).InnerException;
while(inner != null)
{
// メッセージの編集
msg += Environment.NewLine;
msg += inner.ToString();
inner = inner.InnerException;
}
MessageBox.Show(msg,"システム例外");
// アプリケーション終了
Application.Exit();
}
★★ frmNyukin該当画面でビジネスDLL呼び出し ★★
→インプットマン使用
private void fncKey_FunctionKeyPress(object sender, GrapeCity.Win.Input.FunctionKeyPressEventArgs e)
{
//マウスポインタ 待機中(砂時計)
this.Cursor=Cursors.WaitCursor;
//確認(F4)
if (e.Key.Equals(ButtonKeys.F4))
{
//選択患者のデータ抽出
this.Get_spdList(this.spdList_Sheet.ActiveRowIndex);
//ファンクションキーの設定
InputManUtility.FuncKeySetActive(this.fncKey,"fncKeySet2");
}
//実行(F5)
else if(e.Key.Equals(ButtonKeys.F5))
{
//患者テーブル ロック
if ( KanjaT_Lock() )
{
//患者データ作成
NyuKinIchiranView nyukind = NyukinData_Make();
NyuKinBusiness nyukinb = new NyuKinBusiness();
//修正
nyukinb.Update(nyukind); → このビジネスで例外が発生し この箇所にtry文を入れればcatchできるのですが
再throwしてもイベントは発生せず!!
//更新完了メッセージ
MsgBox.MsgOkUpdate();
★★ ビジネスDLL ★★
public void Update(NyuKinIchiranView niv)
{
try
{
// 入院一覧データのチェック
if(niv.ToKaikeiBi == null || niv.ToKaikeiBi == "")
{
throw new ExecuteException("変更先の会計日が未設定です");
→Exceptionクラスを継承した、自作の例外
}
if(niv.ToRyosyuBi == null || niv.ToRyosyuBi == "")
{
throw new ExecuteException("変更先の領収日が未設定です");
}
・
・
catch(Exception e)
// 登録時にエラーが発生した場合
{
// トランザクションロールバック
this._txn.Rollback();
// ExecuteExceptionでシステムエラー
throw new ExecuteException(e);
}