Go 尝试:除了:通过但进入?(当出现网络问题时,使运行不崩溃?)
有时我试图刮取一个页面(几个RSS和图像站点),但有时出现连接错误时,我会遇到问题 如何处理Go错误而不必处理/处理Go错误而不导致自身崩溃Go 尝试:除了:通过但进入?(当出现网络问题时,使运行不崩溃?),go,Go,有时我试图刮取一个页面(几个RSS和图像站点),但有时出现连接错误时,我会遇到问题 如何处理Go错误而不必处理/处理Go错误而不导致自身崩溃 package main import ( "fmt" "math/rand" "sync" "time" ) type Manager struct { threadCount int } v
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
type Manager struct {
threadCount int
}
var (
message = map[string]interface{}{}
messageMutex = sync.RWMutex{}
)
func startGo(bManager Manager) {
for{
messageMutex.RLock()
fmt.Println("hey")
ScrapeImages()
messageMutex.RUnlock()
}
}
func main() {
rand.Seed(time.Now().UnixNano())
stall := make(chan struct{})
bManager := Manager{
threadCount: 5,
}
for i := 0; i < bManager.threadCount; i++ {
go startGo(bManager)
}
<-stall
}
主程序包
进口(
“fmt”
“数学/兰德”
“同步”
“时间”
)
类型管理器结构{
线程计数整数
}
变量(
message=map[string]接口{}{}
messageMutex=sync.RWMutex{}
)
职能启动官(B经理){
为了{
messageMutex.RLock()
fmt.Println(“嘿”)
()
messageMutex.RUnlock()
}
}
func main(){
rand.Seed(time.Now().UnixNano())
暂停:=make(chan结构{})
b管理者:=管理者{
线程数:5,
}
对于i:=0;i Go鼓励程序员处理错误,而不是忽略错误。有关详细信息,请参阅本文:
也就是说,Go也不会“出现网络问题时崩溃”。出现问题时,net/http
函数将返回错误,您可以根据需要在程序中处理这些错误。例如,在您的情况下,ScrapImages
可能会返回错误
如果您有panics
s的代码,您可以使用recover
捕捉恐慌并以某种方式作出反应。这与Python的非常相似,除了:pass
,正如您所提到的。例如,net/http
http服务器通过注销错误并继续提供ot来从处理程序中的恐慌中恢复她的请求。因此,在处理一个请求时出现的恐慌不会使整个服务器崩溃。那么,您不想检查错误,对吗?请创建一个最小的、可复制的示例:--您的代码不显示剪贴画
。不幸的是,您的问题显示出缺乏非常基本的Go基础。请开始,尤其是从开始。