2009-06-12 79 views
11

我知道这可能并不重要,但我想知道什么是正确的。C#:你提出或抛出异常?

如果一段代码包含某个版本的throw new SomeKindOfException()。我们是否说这段代码可能会引发异常?或抛出异常?

的关键词是throw,所以我对那样的倾斜,而是抛出一个异常,也使用了很多...

他们有某种不同的含义?他们其中之一是否会在另一方面造成差异?还是仅仅两个词意味着完全一样的东西?

+0

在Ruby中的相关讨论:http://stackoverflow.com/questions/51021 – 2009-06-12 09:45:32

回答

25

在C#术语中,举起用于事件的上下文中,引发用于例外情况。

就我个人而言,我认为throw/catch组合比raise/catch更美。

+0

啊,当然,我完全同意。现在总体感觉!感谢您清除:) – Svish 2009-06-12 10:26:51

+3

C#也使用“lift”,意思是“为非空类型提供操作符的可空版本”,“提升”表示“将局部变量转换为闭包的字段类”。所以在C#中,你可以提升,提升或提升事物,而它们都意味着不同的东西。 – 2009-06-12 16:06:06

3

我不能说C#,但在C++中选择“throw”是因为“raise”已经被当作标准函数名称。

1

我觉得是更好的一个,这两个术语是可以互换的。如果您必须在某些文本中使用它两次,这样才能避免重复使用同一个单词,这非常有用。但这是文体学,这对于技术写作来说不是必需的(但仍然是一件好事)。

+2

你的英语写作是正确的,但在技术写作中,最好始终使用同一个单词,否则读者可能会认为有一些差异。 – stivlo 2011-05-16 08:57:35

0

抛出或加注似乎很好,它们对我来说意味着相同。我不会写,但是当我说话的时候,我通常会说'查例外'。

对于事件我会使用“触发事件”或“引发事件”。

1

各种语言的术语有利于“抛出”。我同意'throw'更有意义,因为这是使用的关键字,编译器/语言文档总是指异常被'抛出'。

但是,在巨兽的肚子里,异常实际上是Raised,而不是抛出。如果你发现自己足够深入调试器盯着EXCEPTION_RECORD,那么你可以用SEH的术语来讨论,其中编译器/语言例外的特定类别(eh, clr, vcpp)只是众多风格异常之一。我猜想,引发异常(如页面错误和堆栈溢出)的原始条件是内核“注意到”条件,即'通知'条件的用户模式,而不是例外的用户代码是'投掷'到自己身上,所以这个术语在这方面更有意义。