Vac*_*ano 3 c# compact-framework exception-handling exception
说我有这样的方法:
public void SaveData()
{
try
{
foreach (var somevar1 in list.SomeType1s)
{
CEData.SaveRow(sometype1)
}
foreach (var somevar2 in list.SomeType2s)
{
CEData.SaveRow(sometype2)
}
foreach (var somevar3 in list.SomeType3s)
{
CEData.SaveRow(sometype3)
}
foreach (var somevar4 in list.SomeType4s)
{
CEData.SaveRow(sometype4)
}
foreach (var somevar5 in list.SomeType5s)
{
CEData.SaveRow(sometype5)
}
}
catch (Exception e)
{
logger.DebugException("Rollback Occured with the following stack trace: \r\n"
+ e.StackTrace, e);
Rollback();
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法知道在捕获部分我得到了什么?我的堆栈跟踪只会说它在方法SaveData()中,但不是哪一行失败.
我可以在每一行之间添加日志记录,但我不愿意(因为各种调试代码的原因).
所以,我想我会问.抛出异常时是否可以知道正在执行哪一行?
更多信息:
看起来行号应该是标准的.我可以看到我没有得到它们的唯一原因是我正在进行Windows Mobile和Compact Framework开发.那么也许它们不包含在紧凑的框架中?(我的项目为调试信息输出设置了"完整".)
请使用以下StackFrame类中的类来考虑此代码段System.Diagnostics:
using System.Diagnostics;
....
catch (Exception ex) {
StackTrace st = new StackTrace(new StackFrame(true));
StackFrame sf = st.GetFrame(0);
Console.WriteLine(" File: {0}", sf.GetFileName());
Console.WriteLine(" Method: {0}", sf.GetMethod().Name);
Console.WriteLine(" Line Number: {0}", sf.GetFileLineNumber());
Console.WriteLine(" Column Number: {0}", sf.GetFileColumnNumber());
}
Run Code Online (Sandbox Code Playgroud)
对于特定于Compact Framework,.ToString()生成的错误是否包含行号?也许是这样的:
catch(Exception ex)
{string errDesc = ex.ToString();}
Run Code Online (Sandbox Code Playgroud)
揭示了:
"System.Exception:foo\r \n在MyProf.Class.MyMethod(int foo)中的D:\ sourcecode\somefile.cs:第1234行"
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |