我看过很多关于 Java 的已检查异常的评论,暗示其他东西(通常是 C#)在这方面有很大的不同/优越。我对语言 war 方面不感兴趣,但我想知道没有检查异常的语言与 Java 模型有何不同。如果将所有 Java 异常更改为扩展 RuntimeException
,是否会得到相同的结果?
Java 对系统错误(磁盘已满、网络连接错误)使用已检查异常,对程序员错误(无效数组索引、类型转换错误)使用未检查异常。没有受检异常的语言是以另一种方式保持这种区别还是对它们一视同仁?
既然有人投票关闭是主观的,我会再次强调:我不关心人们认为哪种语言更好。我只是问程序员在使用不同的异常模型时必须编码的实际操作差异。我只体验过 Java 版本,所以我想了解其他方式的工作原理。
最佳答案
这两种语言的异常本质上没有区别。
唯一的大区别是,在 Java 中,如果未明确捕获或抛出某些异常(已检查),它们将生成编译错误。
C# 不会以不同方式处理任何异常。 NullReferenceException
本质上与 IOException
相同。
使用 C# 编程时,您必须更好地了解可能发生的错误以及可以处理的错误。 Java 会提醒您处理超出您控制范围的错误,从而让事情变得更容易。
关于c# - 未经检查的异常(例如 C#)与 Java 类异常有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432094/