一些恐慌/恢复用例
这可能是最常见的panic/recover用例了。此用例广泛地使用于并发程序中,尤其是响应大量用户请求的应用。 一个例子:
运行此服务器程序,并在另一个终端窗口运行,我们可以观察到服务器程序不会因为客户连接处理协程中的产生的恐慌而导致崩溃。
如果我们在上例中不捕获客户连接处理协程中的潜在恐慌,则这样的恐慌将使整个程序崩溃。
有时,我们可以使用/函数调用来模拟跨函数跳转,尽管一般这种方式并不推荐使用。这种跳转方式的可读性不高,代码效率也不是很高,唯一的好处是它有时可以使代码看上去不是很啰嗦。 在下面这个例子中,一旦一个恐慌在一个内嵌函数中产生,当前协程中的执行将会跳转到延迟调用处。
一个例子:
但是,这种/函数调用的使用方式一般并不推荐使用,因为它的效率略低一些,并且这种用法不太符合Go编程习俗。
Go语言101项目目前同时托管在和Gitlab上。欢迎各位在这两个项目中通过提交bug和PR的方式来改进完善Go语言101中的各篇文章。
本书微信公众号名称为"Go 101"。每个工作日此公众号将尽量发表一篇和Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。