我是 Goland 的新手,过去我用过 Java。我写了一个 Golang 函数来计算结果的整数部分。我在想的是使用计时器进行计算并生成随机数。但我遇到的一个问题是,如果例程出现错误,主线程将停止。有没有办法让主线程继续运行?即使例行程序有错误?
下面是测试代码:
func main() {
ticker := time.NewTicker(1*1000 * time.Millisecond)
for _ = range ticker.C {
rand.Seed(time.Now().Unix())
divisor := rand.Intn(20)
go calculate(divisor)
}
}
func calculate(divisor int){
result:= 100/divisor
fmt.Print("1/"+strconv.Itoa(divisor)+"=")
fmt.Println(result)
}
由于Golang的错误处理让我很困惑,我想的是错误发生在“线程”中,main函数只是负责创建线程和分配任务,应该不会在乎是否有异常发生“线程”和 main 应该始终保持运行。如果我在 Java 中这样做,我可以使用 try catch 来包围
try{
result = 1/divisor;
}
catch(Exception e){
e.printTrace();
}
甚至每次在单独的线程中给divisor一个0值,主进程都不会退出,但是对于Golang,我觉得
go calculate(divisor)
正在开一个新的“线程”,在“线程”里面运行计算,但是为什么主进程会退出。有没有什么方法可以防止主要进度退出?
谢谢。
动漫人物
相关分类