Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

错误处理

由于这个问题问得比较多,因此专门为大家撰写了这一章节。

基本介绍

目前大多数Golang的第三方WebServer库均没有默认对HTTP请求处理过程中产生的异常进行捕获,轻者错误产生后无法记录到日志造成排查错困难,重则异常造成进程直接崩溃,服务不可用。

...

当你选择gf,你很幸运。为保证严谨性,执行过程中产生的panic是有被Server自动捕获的,产生panic时当前执行流程会立即中止,但是绝对不会影响进程直接崩溃。

自定义错误处理

HTTP执行流程中产生panic异常时,默认处理是记录到Server的日志文件中。当然,开发者也可以通过注册中间件方式手动捕获,然后自定义相关的错误处理。这一操作其实在中间件章节的示例中也有介绍,我们这里来再仔细说明下。

相关方法

异常的捕获我们通过Request对象中的GetError方法获取:

...

该方法往往使用在流程控制组件中,如后置中间件或者HOOK钩子方法中。

使用示例

我们这里使用一个全局的后置中间件来捕获异常,当异常产生后,捕获并写入到指定的日志文件中,返回固定友好的提示信息,避免敏感的报错信息暴露给调用端。

...