Merge pull request #79 from cmatrixprobe/master

修正一处拼写错误
This commit is contained in:
Xargin 2020-03-01 23:47:48 +08:00 committed by GitHub
commit bf67e042e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,7 +25,7 @@ deferred函数帮助Parse从panic中恢复。在deferred函数内部panic val
有时我们很难完全遵循规范举个例子net/http包中提供了一个web服务器将收到的请求分发给用户提供的处理函数。很显然我们不能因为某个处理函数引发的panic异常杀掉整个进程web服务器遇到处理函数导致的panic时会调用recover输出堆栈信息继续运行。这样的做法在实践中很便捷但也会引起资源泄漏或是因为recover操作导致其他问题。
基于以上原因安全的做法是有选择性的recover。换句话说只恢复应该被恢复的panic异常此外这些异常所占的比例应该尽可能的低。为了标识某个panic是否应该被恢复我们可以将panic value设置成特殊类型。在recover时对panic value进行检查如果发现panic value是特殊类型就将这个panic作为errror处理如果不是则按照正常的panic进行处理在下面的例子中我们会看到这种方式
基于以上原因安全的做法是有选择性的recover。换句话说只恢复应该被恢复的panic异常此外这些异常所占的比例应该尽可能的低。为了标识某个panic是否应该被恢复我们可以将panic value设置成特殊类型。在recover时对panic value进行检查如果发现panic value是特殊类型就将这个panic作为error处理如果不是则按照正常的panic进行处理在下面的例子中我们会看到这种方式
下面的例子是title函数的变形如果HTML页面包含多个`<title>`该函数会给调用者返回一个错误error。在soleTitle内部处理时如果检测到有多个`<title>`会调用panic阻止函数继续递归并将特殊类型bailout作为panic的参数。