2

例外のメソッド名、クラス名、ファイル名、行番号を書きたいです。どうすればこれを達成できますか? テキストファイルExceptionに書き込む関数に渡して、以下のコードを試しました。msg

string msg = "";
StackTrace st = new StackTrace(ex);
var frame=st.GetFrame(0);           
msg = @"Message : " + ex.Message + " \n FileName: " + frame.GetFileName() + " \n Method Name : " + frame.GetMethod() + "\n Line Number : " + frame.GetFileLineNumber()+"\n Class Name :"+frame.GetMethod().DeclaringType;

以下のようにファイルに書き込まれたログ

 Message: Message : Attempted to divide by zero. 
 FileName:  
 Method Name : Void Page_Load(System.Object, System.EventArgs)
 Line Number : 0
 Class Name :RequestsView

ページの別の行にあるのに が表示されず、0 が表示されるのFileNameはなぜですか。LineNumberコードの修正があれば提案してください。

4

3 に答える 3

2

スローされた例外のプロパティを使用Exception.StackTraceして、必要なすべての情報を取得するだけです

于 2012-12-17T12:18:40.207 に答える
0

なぜ車輪の再発明を試みるのですか?ドライ。NLogは、この機能を提供し、箱から出してすぐに使用できます。

于 2012-12-17T12:31:32.173 に答える
0

この行を使用して、必要な詳細を取得します..

int lineNumber = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetFileLineNumber(); className = new System.Diagnostics.StackTrace(ex, true).GetFrame(0).GetFileName(); methodName = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetMethod().Name;

于 2016-02-04T12:39:31.707 に答える