返回「计算机、信息技术与工程」
Exception
本文目录 2 个章节
Exception
创建时间:2020/6/1 11:34
throw的异常路径问题
参考:https://blog.csdn.net/wangtian2014/article/details/51593789
例1throw的时候使用了参数ex,虽然会抛出同样的异常,但是异常的堆栈信息缺在throw的时候被改变了,我们在接下来的try块中无法获取异常的原始信息。
例2没有参数,这个无参的throw可以看做为rethrow(即继续抛出),他会抛出之前捕获到的所有异常。
例3则完全是一个新的异常,class1中抛出的异常被当做内部异常,存放在inner exception中
class MyClass<T, U>
where T : class
where U : struct
{ }
class MyClass<T, U>
where T : class
where U : struct
{ }
class MyClass<T, U>
where T : class
where U : struct
{ }
InnerException
当 Y上一个异常的直接结果引发 X 异常时,X 的 InnerException 属性应包含对 Y的引用。 你可以创建一个新的异常来捕获更早的异常。 处理第二个异常的代码可以利用以前异常中的其他信息来更正确地处理错误。
class MyClass<T, U>
where T : class
where U : struct
{ }
新的异常可以添加新的信息,新异常的堆栈信息包含InnerException的堆栈信息