5.29异常抑制机制(静默处理)

创建于 2026 年 8 月 17 日约 3 分钟读完

在发起 HTTP 远程请求时,可能会遇到以下异常情况:

  • 目标主机不可达
  • 请求被取消
  • 请求超时
  • 其他网络异常

默认情况下,这些异常会中断程序执行。虽然开发者通常使用 try/catch 进行异常处理,但在某些场景下,我们更希望异常发生时静默返回 null 而不中断流程。为此,框架提供了灵活的异常抑制功能。

HTTP 声明式请求通过 SuppressExceptionsAttribute 特性来抑制异常。相应的 HTTP 声明式提取器实现为 SuppressExceptionsDeclarativeExtractor 类型,该类型负责解析 SuppressExceptionsAttribute 特性并构建 HttpRequestBuilder 实例所需异常抑制配置。

cs
// 在接口定义上应用,影响所有方法[SuppressExceptions] // 抑制所有异常public interface IHttpService : IHttpDeclarative{    [Get("https://furion.net/logo.png")]    Task<string> GetStringAsync();    // 在方法上应用    [SuppressExceptions(typeof(TimeoutException), typeof(TaskCanceledException))]    // 抑制超时和取消异常    [Get("https://furion.net/logo2.png")]    Task<string> GetStringAsync();    [SuppressExceptions(false)]    // 禁用抑制异常(恢复缺省配置)    [Get("https://furion.net/logo2.png")]    Task<string> GetStringAsync();}

启用后,发送 HTTP 远程请求时会自动设置异常抑制机制。

SuppressExceptionsAttribute 包含以下构造函数和属性:

  • 构造函数

    • new():作用于方法或接口,抑制所有异常。
    • new(enable):作用于方法或接口,是否启用异常抑制机制。
    • new(types):作用于方法或接口,抑制指定类型异常。
  • 属性

    • Types:异常抑制类型集合(type[] 类型,数组中的每个元素必须是 System.Exception 类型或其派生类型)。