nonebot2/website/versioned_docs/version-2.0.0-rc.1/api/exception.md
github-actions[bot] 3234871b53 🔖 Release 2.0.0-rc.1
2022-10-02 08:05:19 +00:00

5.4 KiB

sidebar_position description
10 nonebot.exception 模块

nonebot.exception

本模块包含了所有 NoneBot 运行时可能会抛出的异常。

这些异常并非所有需要用户处理,在 NoneBot 内部运行时被捕获,并进行对应操作。

NoneBotException
├── ParserExit
├── ProcessException
|   ├── IgnoredException
|   ├── SkippedException
|   |   └── TypeMisMatch
|   ├── MockApiException
|   └── StopPropagation
├── MatcherException
|   ├── PausedException
|   ├── RejectedException
|   └── FinishedException
├── AdapterException
|   ├── NoLogException
|   ├── ApiNotAvailable
|   ├── NetworkError
|   └── ActionFailed
└── DriverException
    └── WebSocketClosed

class NoneBotException()

  • 说明

    所有 NoneBot 发生的异常基类。

class ParserExit(status=0, message=None)

  • 说明

    shell_command 处理消息失败时返回的异常

  • 参数

    • status (int)

    • message (str | None)

class ProcessException()

  • 说明

    事件处理过程中发生的异常基类。

class IgnoredException(reason)

  • 说明

    指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。

  • 参数

    • reason (Any): 忽略事件的原因

class SkippedException()

  • 说明

    指示 NoneBot 立即结束当前 Dependent 的运行。

    例如,可以在 Handler 中通过 Matcher.skip 抛出。

  • 用法

    def always_skip():
        Matcher.skip()
    
    @matcher.handle()
    async def handler(dependency = Depends(always_skip)):
        # never run
    

class TypeMisMatch(param, value)

  • 说明

    当前 Handler 的参数类型不匹配。

  • 参数

    • param (pydantic.fields.ModelField)

    • value (Any)

class MockApiException(result)

  • 说明

    指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。

  • 参数

    • result (Any): 返回的内容

class StopPropagation()

  • 说明

    指示 NoneBot 终止事件向下层传播。

    在 {ref}nonebot.matcher.Matcher.blockTrue 或使用 Matcher.stop_propagation 方法时抛出。

  • 用法

    matcher = on_notice(block=True)
    # 或者
    @matcher.handle()
    async def handler(matcher: Matcher):
        matcher.stop_propagation()
    

class MatcherException()

  • 说明

    所有 Matcher 发生的异常基类。

class PausedException()

  • 说明

    指示 NoneBot 结束当前 Handler 并等待下一条消息后继续下一个 Handler。可用于用户输入新信息。

    可以在 Handler 中通过 Matcher.pause 抛出。

  • 用法

    @matcher.handle()
    async def handler():
        await matcher.pause("some message")
    

class RejectedException()

  • 说明

    指示 NoneBot 结束当前 Handler 并等待下一条消息后重新运行当前 Handler。可用于用户重新输入。

    可以在 Handler 中通过 Matcher.reject 抛出。

  • 用法

    @matcher.handle()
    async def handler():
        await matcher.reject("some message")
    

class FinishedException()

  • 说明

    指示 NoneBot 结束当前 Handler 且后续 Handler 不再被运行。可用于结束用户会话。

    可以在 Handler 中通过 Matcher.finish 抛出。

  • 用法

    @matcher.handle()
    async def handler():
        await matcher.finish("some message")
    

class AdapterException(adapter_name, *args)

  • 说明

    代表 Adapter 抛出的异常,所有的 Adapter 都要在内部继承自这个 Exception

  • 参数

    • adapter_name (str): 标识 adapter

    • *args (object)

class NoLogException(adapter_name, *args)

  • 说明

    指示 NoneBot 对当前 Event 进行处理但不显示 Log 信息。

    可在 Event.get_log_string 时抛出

  • 参数

    • adapter_name (str)

    • *args (object)

class ApiNotAvailable(adapter_name, *args)

  • 说明

    在 API 连接不可用时抛出。

  • 参数

    • adapter_name (str)

    • *args (object)

class NetworkError(adapter_name, *args)

  • 说明

    在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。

  • 参数

    • adapter_name (str)

    • *args (object)

class ActionFailed(adapter_name, *args)

  • 说明

    API 请求成功返回数据,但 API 操作失败。

  • 参数

    • adapter_name (str)

    • *args (object)

class DriverException()

  • 说明

    Driver 抛出的异常基类

class WebSocketClosed(code, reason=None)

  • 说明

    WebSocket 连接已关闭

  • 参数

    • code (int)

    • reason (str | None)