代码之家  ›  专栏  ›  技术社区  ›  Sean

术语-事件能被“抛出”吗?

  •  6
  • Sean  · 技术社区  · 15 年前

    本周,我读过两次有人写道一个事件(.net)被“抛出”。我一直认为用于事件的动词要么是“火”,要么是“上升”。我认为“抛出”用于异常,但不用于事件(“引发”也可用于两者)。

    是否有其他人觉得“抛出”事件令人困惑?

    9 回复  |  直到 15 年前
        1
  •  7
  •   rjzii    15 年前

    msdn库中的标准约定似乎是指 Raising an Event Throwing an Exception .

        2
  •  18
  •   Antony Scott    15 年前

    我同意,事件是引发/激发/触发的。如果抛出任何东西,都是例外。

        3
  •  5
  •   Erik Funkenbusch    15 年前

    另一个术语是“调用”。由于事件是Delgate,所以调用它们来调用它们,但是的,一般术语是“激发”或“引发”。

    此外,在这个上下文中使用“throw”一词是令人困惑的,因为它将与“throw”关键字混淆。不能使用throw关键字引发事件。

        4
  •  3
  •   bdukes Jon Skeet    15 年前

    raise是似乎在msdn文档中最常见的动词。

    我同意——如果我听说有东西被扔了,我想这是个例外。C语言使得一个非常明确的-throw是一个保留字,除了例外。

        5
  •  3
  •   John Feminella    15 年前

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

        6
  •  3
  •       15 年前

    不,他们不能被扔,但就像矮人和哈比人一样,他们可以被扔。

        7
  •  2
  •   Jonas Kölker    15 年前

    我认为事件是可以抛出的,但如果您真的这样做了,它是不合格的编码。

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

    但如果你真的这样做的话,你很可能是在做一些可怕的错误或者令人困惑的事情。

    我完全赞成不要夸大单词的含义,避免歧义(在不需要歧义的地方)。

    我认为“throw”通常被理解为意味着调用堆栈展开(当您有一个定义良好的堆栈时,但我认为它可以扩展到一个程度上没有边界的单链接列表;也就是说,一个父指针树)。让我们坚持下去。

    单词“raise”也用于表示信号。如果能避免在活动中使用这个,那就太好了。

    我更喜欢在事件发生时“被激发”(“OnMouseOver事件刚被激发”),或者在事件侦听器通知使用者时“被发出信号”(“XmouseMotionNotify事件被发送给客户端”)。

        8
  •  1
  •       15 年前

    你通常听到人们提到被解雇或被提升的事件。但在我看来,扔是完全好的。关键是如果他们说事件被抛出了。

    不要试图分裂成许多毛发。我们的职业非常复杂,有成千上万的技术,更不用说思考我们沟通方式的细微差别了。

        9
  •  1
  •   boutta tomriddle_1234    15 年前

    我会说你 出版 一个事件。