1

以下のコードで例外の詳細を取得しようとしましたが、詳細にエラーが発生していません。

ftp クラスのようなコードを使用して、ftp サーバーからファイルをダウンロードしようとしていました。ファイルが見つからない場合は、上記のメソッドを起動して例外を渡します。残念ながら、メソッドは次のように出力しました。

Error occured and Error details as follows
Exception occured in file 
Exception occured in method SyncRequestCallback
Exception occured in line & column number 0 0

これが私のコードです。例外の詳細 (行番号、例外がスローされたメソッドなど) を取得するにはどうすればよいですか?

public static string GetException(Exception ex)
{
    //Get a StackTrace object for the exception
    StackTrace st = new StackTrace(ex, true);
    //Get the first stack frame
    StackFrame frame = st.GetFrame(0);
    //Get the file name
    string fileName = frame.GetFileName();
    //Get the method name
    string methodName = frame.GetMethod().Name;
    //Get the line number from the stack frame
    int line = frame.GetFileLineNumber();
    //Get the column number
    int col = frame.GetFileColumnNumber();

    string strBody = "Hi,<br/><br/>";
    strBody = strBody + "Error occured and Error details as follows<br/>";
    strBody = strBody + "Error message " + ex.Message + "<br/>";
    strBody = strBody + "Exception occured in file " + fileName + "<br/>";
    strBody = strBody + "Exception occured in method " + methodName + "<br/>";
    strBody = strBody + "Exception occured in line & column number " + line + " " + col + "<br/><br/>Thanks";
    return strBody;
}

ありがとう

4

2 に答える 2

4

.pdb より多くの情報を取得するには、ビルド時に生成されたファイルをデプロイする必要があります。これにより、エラーが発生した特定の行を知ることができます。

補足として、ログに記録するための非常に複雑なロジックを作成する車輪を再発明しているように思えます。log4netとしてあなたのために汚い仕事をするフレームワークがたくさんあります。

于 2013-02-28T14:25:31.923 に答える
1

例外を呼び出すToStringと、一般に公開されている詳細の読み取り可能なバージョンが生成されます。また、例外で利用可能な詳細のみが表示されるため、アプリがデバッグ モードで実行されておらず、対応する *.pdb ファイルがない場合 (または、後でそれらを添付する必要がない場合) - およびシンボルロードすると、詳細なソース情報を取得できません。

于 2013-02-28T14:25:53.873 に答える