C# 异常笔记

1.通常异常都是捕捉,然后处理或抛
try { }
catch (Exception ex){ throw new Exception("出错啦!", ex); }
可优化为
try { } 
catch{ throw; }

2.捕捉异常不处理可不加catch,这样能提升性能
try {} finally{}

3.异常捕捉错误的行数
int index = ex.StackTrace.IndexOf("行号");
if (index != -1)
{
    ex.StackTrace.Substring(index, ex.StackTrace.Length - index);
} 
else
{
    ex.StackTrace;
}
需要注意的是程序如果不是debug下运行,必须要有对应的.pdb文件才能获取到,而且获取到的路径是生产代码时的路径,否则StackTrace里面只包含方法信息,另附其它有关的两个方法,

//获取运行此方法的代码行数
public string GetCodeLineNum()
{
    return new System.Diagnostics.StackTrace(1,true).GetFrame(0).GetFileLineNumber().ToString();
}

//获取运行此方法的文件名,包含路径
public static string GetSourceFileName()
{
    return new System.Diagnostics.StackTrace(1, true).GetFrame(0).GetFileName();
}

猜你喜欢

转载自blog.csdn.net/ai520587/article/details/82218986