我目前正在考虑如何编写测试来检查给定的代码是否出现了混乱?我知道 Go 使用 recover
来捕捉恐慌,但是与 Java 代码不同的是,您不能真正指定在发生恐慌时应该跳过哪些代码,或者您已经跳过了哪些代码。如果我有一个函数:
func f(t *testing.T) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
OtherFunctionThatPanics()
t.Errorf("The code did not panic")
}
我真的不能说是否 OtherFunctionThatPanics
恐慌和我们恢复,或者如果功能没有恐慌。如果没有恐慌,如何指定跳过哪些代码,如果有恐慌,则执行哪些代码?我怎么才能知道我们是否从恐慌中恢复过来了呢?