1. 首页
  2. 主题
  3. Go问与答

问个GO线程问题!!!!!!

hellsam · · 1619 次点击
~~~ 以下的函数 让他无限循环下去 GO线程 访问httpURL 我后期要制作window服务的, 但是测试下来 当http://127.0.0.1:8080/ntp 一旦无法打开访问的时候 这个线程就挂掉了 我在开启也没用了不在执行了 想问下如何解决这个问题呢 当URL无法访问的时候线程不停止或则休眠什么的, 直到URL再次能访问继续执行 func main() { for i := 0; i < 10; i++ { sss := strconv.Itoa(i) go Say("ceshi " + sss) if i >= 8 { i = 0 } time.Sleep(5 * time.Second) } } func Say(s string) { fmt.Println(s) a, err := http.Get("http://127.0.0.1:8080/ntp") if err != nil { panic(err) } a.Body.Close() } ~~~
修改say增加异常处理部分代码: func Say(s string) { defer func() { // 必须要先声明defer,否则不能捕获到panic异常 fmt.Println(&#34;c&#34;) if err := recover(); err != nil { fmt.Println(err) // 这里的err其实就是panic传入的内容,55 } fmt.Println(&#34;d&#34;) }() fmt.Println(s) a, err := http.Get(&#34;http://127.0.0.1:&#34;) if err != nil { panic(err) } a.Body.Close() }
#1
更多评论
修改say增加异常处理部分代码: ![image.png](https://static.studygolang.com/171217/8d71605c25e60e4de2d0293d94459370.png)
#2
<a href="/user/kangyunqiang" title="@kangyunqiang">@kangyunqiang</a> 好的谢谢
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中