有没有办法从C#中抛出异常时生成的StackTrace
中提取短文件名?
例如,我有这个代码捕获抛出的异常并显示JavaScript警报:
try
{
da.saveDebitCardPaymentDetails(cboDebitCardProvider.SelectedItem.Text, txtDcNum.Text, txtDcHolderName.Text, cboDdlDcard.SelectedItem.Text, 1 /*kasi test lang muna*/, 37 /*kasi test lang muna*/, 10000 /*kasi test lang muna*/);
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "test", "alert('Your payment has been processed.');", true);
}
catch (Exception ee)
{
string bugToTrace = (new StackTrace(ee, true)).GetFrame(0).GetFileName() + " at line " + (new StackTrace(ee, true)).GetFrame(0).GetFileLineNumber().ToString();
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "done", "alert('Oops. Something has gone wrong. Please try again in a few moments. Cause of error: " + ee.Message.Replace("'", "") + " (" + bugToTrace + ")" + "');", true);
}
抛出并捕获异常时,将显示完整路径(不带反斜杠)。我希望它只显示,例如:AClass.cs at line 1909
答案 0 :(得分:1)
最简单的方法是使用Path.GetFileName Method(String)
https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx