This discussion is archived
1 Reply Latest reply: Nov 3, 2011 4:17 PM by Takashi Matsuoka RSS

ODP.NETでハンドルされない例外を起すと、アプリケーションが消滅する。

889828 Newbie
Currently Being Moderated
環境:ODP.NET 11g  WinXP VisualStudio 2005 C#2.0

いつもお世話になっております。
上記環境で下記のコードを書くと、
アプリケーションが跡形もなく消滅してしまいます。

ハンドルされていない例外が発生したときは、
AppDomain.CurrentDomain.UnhandledExceptionなどを使って
ロギングしたいのですが、
オラクルにリンクしたアプリケーションはそれができなくなってしまいます。
例外を取り出せる良い方法はないでしょうか。

下記のコードではフォーム上で例外が発生していますので、
何とか例外をとることができますが、
別スレッド上で落ちるときに問題になります。

もちろん、自分でTryCatchを入れるのが基本ですが、
すでにリリースしてしまっているソフトで問題が起こっており、
その調査のための質問になります。
よろしくお願い致します。


using Oracle.DataAccess.Client;

private void Form2_Load( object sender, EventArgs e )
{
     // オラクルの処理はこれだけ。これを書かなければ問題ない。
     OracleConnection connection = new OracleConnection();

     // ハンドルされていない例外を発生させる。
     object destroyer = null;
     destroyer.GetType();

}
  • 1. Re: ODP.NETでハンドルされない例外を起すと、アプリケーションが消滅する。
    Takashi Matsuoka Newbie
    Currently Being Moderated
    直接的な回答ではありませんが...
    わたしの手元では再現しませんでした。
    問題なく、CurrentDomain.UnhandledExceptionを通ります。
    (Visual Studioにブレークを設定して、停止することで確認しました。)

    WindowsXP SP3
    ODP.NET 10g(手元が10gだったので。)
    Visual Studio 2005 Windowsアプリケーション

    public Form1()
    {
    InitializeComponent();

    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    }

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
    throw new Exception("The method or operation is not implemented.");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    OracleConnection connection = new OracleConnection();

    object destroyer = null;
    destroyer.GetType();
    }

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points