错误处理通常有以下几种方式
继续传递
这是很常见的一种情况,例如你的函数中依赖某个必须的数据源,当获取相应数据失败时,将失败信息直接返回是一种最简单的处理方式
追加信息后返回
针对上面的情况,我们可能不知道一场发生的具体时机,那么外层增加一些信息后返回看上去就是一个很好的选择
这在 GoLang 中是非常常见的,因此,规范建议不要将错误信息的首字母大写,因为他们可能被嵌套在外层信息之中,同时,为了在 log 中更好地定位报错信息,建议不要在错误信息中换行
直接中止程序执行
通常这样的处理方式发生在主程序部分
此时日志中会打印出:
2019/11/17 15:04:05 Site is down: parsing techhlog.cn error: socket timeout
继续执行
对于非关键异常,仅记录异常发生,不做任何处理有时是正确的处理方式
一个典型的例子是文件读取,我们必须检测 error 参数,判断是否读取到了文件的末尾,从而判断是否需要中止继续进行读写
完全忽略异常的发生
通常不建议忽略函数显式返回的 error 参数
可以通过占位符 "_" 来实现相应参数的忽略