Skip to content

Commit 9da945f

Browse files
committed
修改了一下格式
1 parent 80c847a commit 9da945f

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

12.2.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
- 记录错误:系统出错错误时,一般就是我们调用函数的时候返回err不为nil的情况下,使用前面小节介绍的日志系统记录到日志文件,如果是一些致命错误通过邮件通知系统管理员,例如一般404之类的错误不需要发送邮件,只需要记录到日志系统。
2323
- 回滚当前的请求:如果一个用户请求过程中出现了一个服务器错误,那么已完成的操作需要回滚。下面来看一个例子:一个系统讲用户递交的表单保存到数据库,并将这个数据递交到一个第三方服务器,但是第三方服务器挂了,这就导致一个错误,那么先前存储到数据库的表单数据应该删除,而且应该通知用户系统出现错误了。
2424
- 保证现有程序可运行可服务:我们知道没有人能保证程序一定能够一直正常的运行着,万一哪一天程序崩溃了,那么我们就需要记录错误,然后立刻让程序重新运行起来,让程序继续提供服务,然后再通知系统管理员,通过日志等找出问题。
25+
2526
## 如何处理错误
2627
错误处理其实我们已经在十一章第一小节里面有过介绍如何设计错误处理,这里我们再从一个例子详细的讲解一下,如何来处理不同的错误:
2728

@@ -96,7 +97,7 @@
9697
ErrorInfo := "系统暂时不可用" //获取当前用户信息
9798
t.Execute(w, ErrorInfo) //执行模板的merger操作
9899
}
99-
100+
100101
## 如何处理异常
101102
我们知道在很多其他语言中有try...catch操作,可以捕获异常情况,但是其实很多的错误我们都是可以预期的,而不是异常处理,应该当做错误来处理,这也是为什么Go语言采用了函数返回错误的设计,这些函数不会panic,例如如果一个文件找不到,os.Open返回一个错误,它不会panic;如果你向一个中断的网络连接写数据,net.Conn系列类型的Write函数返回一个错误,它们不会panic。这些状态在这样的程序里都是可以预期的。你知道这些操作可能会失败,因为设计者已经用返回错误清楚地表明了这一点。这就是上面所讲的可以预期的错误。
102103

0 commit comments

Comments
 (0)