著作一覧 |
同僚が作ったC#のプログラムが死ぬ。
COMコンポーネントの呼び出しがまずいということはわかっているのだが、とにかく途中でマイクロソフトへ送信するかダイアログが出て、そして何も残らず死ぬ。
こういう状況は以前経験して、そのとき調べた方法をどこかに書いたなぁと裏庭を眺めても出ていない。
で、思い出したが、コーディングの掟の例外の掟のところに書いたのであった。
ハンドルされない例外を受けると規定の動作がMSへの問い合わせとなる。それがいやなら、自分で、ハンドルされない例外ハンドラー(屋上の屋根のような)を設置してやれば良い。ハンドルされない例外ハンドラーはAppDomainが持つので、次のようにする。
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( delegate(object sender, UnhandledExceptionEventArgs e) { Exception ex = (Exception)e.ExceptionObject; using (StreamWriter sw = new StreamWriter(Path.Combine(Path.GetTempPath(), AppDomain.CurrentDomain.FriendlyName + ".Log"))) { sw.WriteLine(ex.Message); sw.WriteLine(ex.StackTrace); } Environment.Exit(1); });
というわけで、役に立ったのであった。
コーディングの掟(最強作法) 現場でよく見る不可解なJavaコードを一掃せよ! (開発の現場セレクション)(arton)ジェズイットを見習え |