转载请注明来自:黄朝辉的博客
首先来一段代码
using System;
using System.IO;
public class Program
{
public static void Main( )
{
try
{
try
{
var num = int.Parse("abc");
}
catch ( Exception inner )
{
try
{
var openLog = File.Open("DoesNotExist", FileMode.Open);
}
catch
{
throw new FileNotFoundException("OutterException", inner);
}
}
}
catch ( Exception e)
{
string inMes, outMes;
if (e.InnerException != null)
inMes = e.InnerException.Message;
outMes = e.Message;
}
}
}
在上面的例子中,将abc转换为int会抛出FormatException异常;打开了一个不存在的文件,会抛出FileNotFoundException异常,由于我将捕获到的异常作为了FileNotFoundException的内部异常, 我在外部就可以通过内部异常(InnerException)来知道第一个FormatException异常。
此外,如果一个异常的内部异常为空,通常意味着它是造成当前异常状态的根源。
参考:stackoverflow上的说明