WithTimeout 的使用
下面的例子通过 WithTimeout 创建了一个带有超时的 context。在后面一个阻塞函数任务执行超时后,取消任务继续执行。
1  | package main  | 
处理超时异常
通过 ctx.Err() 可以捕获到一个 Context Deadline Exceeded 异常。当 ctx.Done(),被执行后,就可以捕获到并通过 errors.Is() 来判断这个异常是否为 context.DeadlineExceeded:
1  | if errors.Is(err, context.DeadlineExceeded) {  | 
HTTP
Context Deadline Exceeded 常用在 HTTP 请求的上下文。设置截止日期或超时设置(即请求应中止的时间),并捕获在 Go 中发生的错误。如果服务器响应的时间大于设置的超时时间,则返回此错误。为请求设置超时是生产环境中的一个好习惯,可确保您始终在有限时间内获得响应(或错误)。
1  | package main  | 
1  | 2021/08/19 06:39:09 ContextDeadlineExceeded: true  | 

