2010-10-19 59 views
5

在Eclipse中编程Java,我习惯于处理异常。在使用VisualStudio的C#中,似乎我不能说在一个方法上“抛出异常”......经过很多编码之后,我发现了很多异常,并且在测试过程中发现它们时必须抓住它们。我想被迫去处理它们,这样VisualStudio可以说在这里你需要一个catch或者我不会让你继续下去:)这可能吗?没有强制的异常处理?

谢谢

回答

8

不需要C#不会强制您处理异常。这是语言设计师的一个明智的设计决定。

有关原因的详细信息,请参见The Trouble With Checked Exceptions,Anders Hejlsberg在其中讨论了为什么它们不属于C#的一部分。

+0

噢,太糟糕了:)谢谢你的回答! – Johannes 2010-10-19 20:49:50

+0

其中,尽管据称容易出错,但却让程序员可以自由地声明“我知道我在做什么” – 2010-10-19 20:50:10

+0

@Johannes:在你认为这是“不好的”之前,我会阅读那次采访。我曾经认为这是C#中的一个缺陷,但我已经完全转换为将其视为“专业版”... – 2010-10-19 20:50:36

0

不,这是不可能的。

您可以做的是查找您在MSDN中执行的.NET库方法:预计将由该方法抛出的异常记录在那里。之后,你可以决定你想要捕捉哪些,哪些不想在这里处理。

+0

没有更好的方式比在文档中查看它们更好吗?如果你问我,应该有一些可能性在VisualStudio中做到这一点:)某些类型的“右键单击 - >可以显式的异常可以抛出”:) – Johannes 2010-10-19 20:54:40

+0

@Johannes:没错,那很好,但是因为context- Visual Studio中的敏感帮助是相当不错的(只需将光标放在方法名称上按F1即可),查找文档非常快。 – Heinzi 2010-10-19 21:27:08

0

您可以使用various tools查找例外。 .NET 4也有一个叫做代码合同的东西,它可以帮助你执行前/后条件,并且可以避免一些例外情况。

2

不,在C#中没有检查异常。而原因很简单:

1)他们往往没有达到预期的有目的的,因为不是每个如下两种处理它们明示或将它们上传链推荐的做法。相反,它们会在开发堆栈中被开发人员“吃掉”。
2),因为它们是文档的自然组成部分,而不是可执行代码,他们应该进入的文件,而不是杂乱的代码表面开发工具

3) C#/框架文件是这样的理想之地文档。使用Visual Studio Object浏览器进行游戏,浏览到该方法,您会在下面的窗格中看到它们。