Contributed by
Wouter De Jong
in #18140.

ConsoleEvents::EXCEPTION 事件 将在命令行运行时有异常抛出时立即触发。它可用于改变异常或者在程序抛出异常之前以某种方式控制它们。

然而,这个事件仅在 Command#execute() 方法的执行过程中碰到异常时,才会被派遣。所有其他异常 (如,由listeners所抛出的) 都会在 Application#doRunCommand() 方法中被静默捕获。这意味着,无法在那些场合下去覆写异常处理。

在Symfony 3.3中,我们决定改进命令行中的异常处理,引入了 一个全新的ConsoleEvents::ERROR事件 并且不建议再使用 ConsoleEvents::EXCEPTION 事件。一个新的 ConsoleErrorEvent 类也被创建了,同时 ConsoleExceptionEvent 类同样不建议再使用。