为什么VB.NET不强制处理异常?

时间:2010-07-09 19:22:45

标签: .net exception enforcement

  

可能重复:
  Why are Exceptions not Checked in .NET?

如果我没记错的话,Java会强制捕获和处理被调用方法可能抛出的任何异常。为什么.NET不这样做?

3 个答案:

答案 0 :(得分:11)

Java中的此功能称为已检查的异常。 C#的创建者Anders做了一次采访,他详细解释了为什么他们没有被包含在C#中,因此也没有包含在VB.Net中

因此我说VB.Net因为如果C#和CLR都没有检查异常,那么VB.Net也没有理由包含它们。 VB已经从一个没有包含例外的模型进行了大规模的转变。引入一个与CLR的其他部分完全不同的新异常模型会导致无效,造成用户混淆并导致更多的交叉语言兼容性问题

答案 1 :(得分:3)

我建议阅读The Trouble with Checked Exceptions,其中首席C#架构师Anders Hejlsberg与Bruce Eckel和Bill Venners讨论可检出性例外的可版本性和可伸缩性问题。

答案 2 :(得分:2)

有时您不希望在发生异常的方法中立即处理异常。

有时你无能为力。

例如,如果要从数据库检索数据,并且检索数据时出现问题,则数据访问层可能不是处理问题的最佳位置。允许异常冒泡到业务逻辑层或表示层可能会更好,其中可以向用户显示适当的信息。

在.Net中,一般方法是只处理异常,如果你能对它做点什么的话。通常,您所能做的就是向用户提供有用的信息。