5.29异常抑制机制(静默处理)
创建于 2026 年 8 月 17 日约 3 分钟读完
在发起 HTTP 远程请求时,可能会遇到以下异常情况:
- 目标主机不可达
- 请求被取消
- 请求超时
- 其他网络异常
默认情况下,这些异常会中断程序执行。虽然开发者通常使用 try/catch 进行异常处理,但在某些场景下,我们更希望异常发生时静默返回 null 而不中断流程。为此,框架提供了灵活的异常抑制功能。
HTTP 声明式请求通过 SuppressExceptionsAttribute 特性来抑制异常。相应的 HTTP 声明式提取器实现为 SuppressExceptionsDeclarativeExtractor 类型,该类型负责解析 SuppressExceptionsAttribute 特性并构建 HttpRequestBuilder 实例所需异常抑制配置。
// 在接口定义上应用,影响所有方法[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类型或其派生类型)。