MST

星途 面试题库

面试题:Go并发程序中如何在goroutine里捕获并处理异常

在Go语言的并发编程中,启动了一个goroutine来执行某个函数,假设该函数可能会出现运行时错误(如除零错误),请写出代码示例展示如何在这个goroutine中捕获这种异常,并将异常信息传递给主goroutine进行处理。
45.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func main() {
    resultCh := make(chan interface{})
    go func() {
        defer func() {
            if r := recover(); r != nil {
                resultCh <- r
            }
        }()
        // 模拟可能出现运行时错误的函数
        var num int
        num = 1 / 0 // 这里会触发除零错误
        resultCh <- num
    }()

    for i := 0; i < 1; i++ {
        select {
        case res := <-resultCh:
            if err, ok := res.(error); ok {
                fmt.Printf("捕获到错误: %v\n", err)
            } else {
                fmt.Printf("正常结果: %v\n", res)
            }
        }
    }
    close(resultCh)
}