当前位置: 首页 > 知识库问答 >
问题:

在围棋套路中处理恐慌

公西英叡
2023-03-14
func main() {
    done := make(chan int64)
    defer fmt.Println("Graceful End of program")
    defer func() {
     r := recover()
     if _, ok := r.(error); ok {
        fmt.Println("Recovered")
     }
    }()

    go handle(done)
    for {
        select{
        case <- done:
        return
        }
    } 
}

func handle(done chan int64) {
    var a *int64
    a = nil

    fmt.Println(*a)
    done <- *a
}
func main() {
    done := make(chan int64)
    defer fmt.Println("Graceful End of program")
    defer func() {
     r := recover()
     if _, ok := r.(error); ok {
        fmt.Println("Recovered")
     }
    }()

    handle(done)
    for {
        select{
        case <- done:
        return
        }
    } 
}

func handle(done chan int64) {
    var a *int64
    a = nil

    fmt.Println(*a)
    done <- *a
}

如何从围棋套路中出现的恐慌中恢复过来。以下是游乐场的链接:https://play.golang.org/p/lkvkuxmhjhi

共有1个答案

尉迟边浩
2023-03-14

恢复只在调用panic时从同一个goroutine调用时工作。来自Go博客:

该过程在堆栈上继续,直到当前goroutine中的所有函数都返回,此时程序崩溃

您必须在Goroutine内进行延迟恢复。

 类似资料:
  • 想想一个大项目,它处理由它自己的goroutine处理的大量并发请求。碰巧代码中有一个bug,其中一个请求会因为引用为nil而引起恐慌。 在Java、C#和许多其他语言中,这最终会导致异常,异常会停止请求,而不会对其他正常的请求造成任何损害。在围棋中,这会破坏整个程序。 AFAIK,对于每一个新的go例程创建,我都必须有。这是防止整个程序崩溃的唯一方法吗? 更新:为每个gorouting创建添加调

  • 我对还很陌生。所以,请把剑给我(如果可能的话)。 我试图通过学习这里的教程从web上获取数据 在问之前,我看了很多参考资料,比如: 博客延迟,恐慌和恢复 在Goroutines中处理恐慌 how-show-i-write-goroutine 还有几个,但我想不通。 以下是你不想去游乐场的代码(原因尚不为人所知): 我将代码修改为(假设)处理goroutine中的错误,如下所示(go-playgro

  • 为魅族M8手机开发的围棋打谱软件,还在开发过程中,目前功能不全,但基本功能可用。现在仅支持SGF格式的围棋棋谱。基本功能:打开并解析SGF棋谱,单步向前向后,落子音效,自动提子,显示棋局信息和解说,支持自定义皮肤。

  • 这是一个围棋学习免费软件。 本软件具有人机对局、双人对局、对局演示、对局打谱等功能,可选择2-19路棋盘对局,目前已有三步推算的棋力,可作为围棋初学者的辅助学习工具,也可作为围棋爱好者的辅助研究工具。 本软件采用易语言编写!易语言官方网址: http://www.dywt.com.cn http://www.eyuyan.com 版权所有(C) 2008-2009 梁远海 E-Mail: nply

  • 问题内容: 我正在使用Angular2开发NodeJS应用程序。在我的应用程序中,我有一个主页和搜索页面。对于主页,我有一个将为 localhost:3000 /* 呈现的HTML页面,并且从主页用户导航到 搜索, 即 我由 angular2路由 处理的 localhost:3000 / search 页面。 * 我没有搜索页面的页面,其视图由angular2呈现。但是当我直接点击 localho

  • 问题内容: 我正在编写一个简单的命令行Java实用程序。我希望用户能够使用运算符传递相对于其主目录的文件路径。所以像 我的问题是有没有办法让Java自动解决这种类型的路径?还是需要为操作员扫描文件路径? 似乎应该将这种类型的功能烘焙到对象中。但这似乎并非如此。 问题答案: 在大多数情况下,从用户处获得一个简单的字符(在转换之前)就足够了- 因为波浪号仅在路径目录部分的第一个字符时才扩展到主目录。