14

我知道这可能并不重要,但我想知道什么是正确的。

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

关键字是throw,所以我有点倾向于那个,但也经常使用引发异常......

它们有某种不同的含义吗?其中一个是否暗示了与另一个的差异?还是只是两个词的意思完全一样?

4

5 回答 5

28

在 C# 术语中,引发用于事件上下文,抛出用于异常上下文。

个人觉得throw/catch组合比raise/catch..

于 2009-06-12T09:30:11.910 回答
3

我不能代表 C#,但在 C++ 中选择了“throw”,因为“raise”已被视为标准函数名称。

于 2009-06-12T09:30:39.380 回答
1

我认为虽然throw更好,但这两个术语是可以互换的。如果您必须在某些文本中使用它两次以避免重复相同的单词,则非常有用。但这是技术写作所不需要的文体(但仍然是一件好事)。

于 2009-06-12T09:43:50.423 回答
1

各种语言的术语都有利于“投掷”。而且我同意“抛出”更有意义,因为这是使用的关键字,并且编译器/语言文档总是提到异常被“抛出”。

但是,在庞然大物的肚子里,异常实际上是Raised,而不是抛出。如果您发现自己在调试器中足够深入地盯着EXCEPTION_RECORD,那么您会使用SEH的术语,其中特定的编译器/语言异常类(eh、clr、vcpp)只是众多异常类型中的一种。我猜想引发异常的原始条件(例如页面错误和堆栈溢出)是内核“注意到”的条件,即“通知”用户模式的条件,而不是用户代码“抛出”到自己身上的异常,因此该术语在这种情况下更有意义。

于 2009-06-12T11:24:03.053 回答
0

投掷或加注似乎都很好,它们对我的意义相同。我不会写它,但是当我说话时,我通常会说“查出异常”。

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

于 2009-06-12T09:54:16.670 回答