关于C#内部异常加出错数据再抛出的方法
利用Exception类的“public Exception(string message, Exception innerException)”构造函数,加上出错数据再抛出的方法,既可以保存原来的内部出错信息,又可以显示出出错时当时的出错数据,这个方法非常好,具体代码如下:
StringBuilder sbErrorData = new StringBuilder();
try
{
string sIntStr = "dfal";
sbErrorData.Append(sIntStr);
int i = int.Parse(sIntStr);
}
catch(Exception ex)
{
throw new Exception("出错数据:"+ sbErrorData.ToString(), ex);
}
再在外层调用捕捉异常后,用ex.ToString()输出的错误信息既有出错数据,又有内部异常的完整信息,更方便查找错误原因。错误信息如下:
System.Exception: 出错数据:dfal --->System.FormatException: 输入字符串的格式不正确。
在 System.Number.StringToNumber(String str, NumberStylesoptions, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
在 System.Number.ParseInt32(String s, NumberStyles style,NumberFormatInfo info)
在 System.Int32.Parse(String s)
在 TestProj.Form1.button2_Click(Object sender, EventArgs e)位置 D:\Form1.cs:行号 70
--- 内部异常堆栈跟踪的结尾 ---
在 TestProj.Form1.button2_Click(Object sender, EventArgs e)位置 D:\Form1.cs:行号 74