异常处理

有时候, 我们需要通过一个统一的接口去接受错误, 除了使用不方便的 execution_contexts[0], 还有一个内置的事件 ExceptionThrowed, 用于处理各式错误.

导入 ExceptionThrowed:

from graia.broadcast.builtins.event import ExceptionThrowed

当创建时, 我强烈建议用这样的格式:

@broadcast.receiver(ExceptionThrowed)
async def error_handler(event: ExceptionThrowed):
    event.exception # 错误本体
    event.event # 错误抛出时处理的事件

然后再进行处理.

如果在这里面有错误被抛出, 则该错误不会引起另一个 ExceptionThrowed 的抛出, 而是直接打印.