可以通过使用goroutine和channel来实现在主程序中打印报错信息。

首先,在主程序中创建一个channel用于接收报错信息:

errChan := make(chan error)

然后,在子线程中使用defer函数捕获错误,并将错误信息发送到errChan中:

go func() {
	defer func() {
		if r := recover(); r != nil {
			errChan <- fmt.Errorf("截图子线程发生错误: %v", r)
		}
	}()

	log.Println("截图子线程运行中...")
	for running {
		monkey.Device.Screenshot_continuous(&monkey.White_scr, &monkey.Black_scr,
			&monkey.White_time, &monkey.Black_time, &monkey.Pic_count, &monkey.White_time_temp, &monkey.Black_time_temp)
		time.Sleep(200 * time.Millisecond)
	}
	log.Println("截图子线程已退出!")
}()

最后,在主程序中通过select语句监听errChan,当有报错信息时,打印出来:

select {
case err := <-errChan:
	fmt.Println(err)
}

这样,当子线程遇到报错时,报错信息会被发送到errChan中,然后在主程序中通过select语句接收并打印出来。


原文地址: http://www.cveoy.top/t/topic/i5xh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录