术语 - 可以“抛出”事件吗?

时间:2009-03-16 14:24:21

标签: .net exception events terminology

本周两次,我读过有人写道,事件(.net)被“抛出”了。我一直认为用于事件的动词要么是“火”,要么是“加注”。我认为“抛出”用于例外,但不是事件(“加注”可以用于任何一个)。

是否有其他人发现将事件“抛弃”令人困惑?

9 个答案:

答案 0 :(得分:18)

我同意,事件被提出/解雇/触发。如果抛出任何东西,那就是例外。

答案 1 :(得分:7)

MSDN库中的标准约定似乎引用了Raising an EventThrowing an Exception

答案 2 :(得分:5)

另一个术语是“被调用”。由于事件是delgates,因此调用它们来调用它们,但是一般术语是“触发”或“引发”。

此外,在此上下文中使用“throw”一词令人困惑,因为它会与“throw”关键字混淆。您不能使用throw关键字抛出事件。

答案 3 :(得分:3)

Raise是MSDN文档中最常见的动词。

我同意 - 如果我听到有人抛出某些东西,我认为这是一个例外。 C#语言使得一个非常明确 - throw是一个与异常一起使用的保留字。

答案 4 :(得分:3)

尽管throw可能不是例外的事情,但很明显throw仅用于例外。 提升确实是您用来表示事件已发生的术语。

答案 5 :(得分:3)

不,他们不能被抛出,但很像矮人和霍比特人,他们可以被扔掉。

答案 6 :(得分:2)

我认为可以抛出事件,但如果你真的这样做,它就是无能的编码。

让我解释一下。在C ++中,您可以抛出任何类型。你可以扔布尔。你可以抛出enum error_type。你可以抛出std::exception。当然你可以抛出struct XEvent

但如果你真的这么做的话,你很可能正在做一些可怕的错误或可怕的混乱(因此也是错误的)。

我全都不是为了不重写单词的含义,以避免含糊不清(不需要存在的地方)。

我认为“throw”通常被理解为暗示调用堆栈展开(因为当你有一个定义明确的堆栈时,但我认为它可以扩展到无限度的单一链接列表;也就是说,一棵树父指针)。让我们坚持下去。

单词“raise”也用于信号。如果有可能避免将此用于事件,那就太好了。

我更喜欢在事件发生时“解雇”(“onMouseOver事件刚刚解雇”),并且当事件监听器通知消费者时“可能已发出信号”(“XMouseMotionNotify事件已通知客户端”)。 / p>

答案 7 :(得分:1)

您通常会听到人们提到被解雇或被提升的事件。但在我看来,抛出完全没问题。关键是如果他们说事件被抛出。

不要尝试分裂成许多头发。我们的专业很复杂,有成千上万的技术,更不用说考虑我们沟通的细微差别了。

答案 8 :(得分:1)

我说你发布一个事件。