我有一个关于在没有抛出异常的情况下使用异常处理的效率影响的假设性问题。
首先看一下这个 C# 代码:
int simpleSimon, cautiousCarol, dangerousDave;
try
{
simpleSimon = int.Parse("fail");
}
catch
{
simpleSimon = 1;
}
try
{
cautiousCarol = int.Parse("1");
}
catch
{
cautiousCarol = 1;
}
dangerousDave = int.Parse("1");
我相信 Dave 的代码将是最快/最有效的;而 Simon 抛出异常会导致很大的惩罚。
但 Carol 呢?既然她不会抛出异常,那么她会受到惩罚吗?如果是,那么是什么样的惩罚以及有多大?(性能惩罚、额外内存使用或其他任何东西?)