为什么C#中不包含Java"throws"子句(在方法声明中)?
Anders Hejlsberg(首席C#架构师)在本次采访中解释道:
http://www.artima.com/intv/handcuffs.html
(除了Patrik有点明确的答案.)
Java中的已检查异常是一个非常有争议的问题.我曾经爱过他们,在编写C#时错过了很多.感觉就像我在没有安全带的情况下开车一样.现在,他们惹恼了我......因为虽然他们在理论上听起来是个好主意,但他们肯定会给我带来很多悲伤,但却没有提供太多实实在在的好处.我记不起曾经遇到过C#代码中的一个错误,检查异常会让我免于死.这并不是说它不可能发生,但它并没有发生在我身上.
令人讨厌的是,在某些方面它仍然感觉C#太松懈 - 但Java的方法并不是正确的.这就像有一个更好的解决方案等待被发现,Java的尝试是一个很好的实验,但它并没有完全奏效.