3

可能重复:
为什么 .NET 中未检查异常?

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

4

3 回答 3

11

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

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

于 2010-07-09T19:25:30.830 回答
3

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

于 2010-07-09T19:26:02.047 回答
2

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

有时你无能为力。

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

在 .Net 中,一般的方法是仅在您可以对其进行处理时才处理异常。通常,您所能做的就是向用户提供有用的信息。

于 2010-07-09T19:28:17.040 回答