为什么有些语言支持它们而另一些不支持呢?把它们加到我的新语言里是个好主意吗?我应该什么时候使用过滤器和catch/rethrow?就像很多事情一样,异常过滤器有好的一面也有坏的一面…

什么是异常过滤器?

CLR提供了许多高级语言可以构建的异常处理原语。有些是相当明显的,并且很容易映射到我们大多数人都知道和喜欢的语言结构:例如try/catch和try/finally。我敢猜测每个人都知道他们在做什么,但为了以防万一,让我们考虑一下C#:

    try{try{
Console.Write(“
1”);if (P) throw newArgumentException();
}
finally{
Console.Write(“
2”);
}
}
catch(ArgumentException e)
{
Console.Write(“
3”);
}
Console.Write(“
4”);

标签: none

添加新评论