不,看起来不错。但是你在捕获它之后重新抛出异常;Throw R
意味着异常被传递到最初调用 try-catch 的代码块。
try
{
Array.Sort(PokeArray, (x1, x2) => x1.Name.CompareTo(x2.Name));
}
catch (NullReferenceException R)
{
// throw R; // Remove this, and your exception will be "swallowed".
// Your should do something else here to handle the error!
}
更新
首先,将您的屏幕截图链接添加到原始帖子 - 它有助于澄清您的问题。:)
其次,您try-catch
确实捕获了异常 - 只是在您处于调试模式时没有。如果在该行之后继续执行,您应该能够从 try-catch 子句中继续,并且您的程序应该继续。
如果您的异常没有被捕获,它将终止程序。
PS:从 VS 的主菜单中选择Debug
和Exceptions..
,并确保您没有为任何列检查“抛出” - 如果这样做,您的程序将暂停并显示发生的任何异常,而不是仅仅“吞下”它们否则会。
让我们重复一遍,只是为了绝对清楚:此异常仅可见,因为代码在调试模式下运行并启用了异常查看。
如果相同的代码在生产模式下运行,异常将被吞没,正如 OP 所期望的那样。