Я думаю, что события могут быть выброшены, но это некомпетентное кодирование, если вы действительно это делаете.
Позвольте мне объяснить. В C ++ вы можете бросить любой тип. Вы можете бросить логические значения. Вы можете бросить enum error_type
. Вы можете бросить std::exception
. И конечно вы можете бросить struct XEvent
.
Но вы, скорее всего, делаете что-то либо ужасно неправильное, либо ужасно запутывающее (и, следовательно, неправильное), если вы действительно это делаете.
Я за то, чтобы не перегружать значения слов, чтобы избежать двусмысленности (там, где это не должно существовать).
Я думаю, что «throw» обычно понимается как разматывание стека вызовов (для случая, когда у вас есть четко определенный стек, но я думаю, что он может быть расширен до односвязного списка неограниченной степени; то есть дерева). родительских указателей). Давайте придерживаться этого.
Слово «рейз» используется и для сигналов. Было бы неплохо, если бы можно было избежать использования этого и для событий.
Я предпочитаю «срабатывать», когда происходит событие («событие onMouseOver только что сработало»), и, возможно, «было сигнализировано», когда прослушиватель событий уведомляет потребителя («событие XMouseMotionNotify было сигнализировано клиенту»).