- 67
- 0
使用errors.New()时,报panic: runtime error: invalid memory address or nil pointer dereference
func (self *Control) Register(ctx context.Context, in *push.RegisterRequest) (*push.RegisterResponse, error) {
var err error
var res = &push.RegisterResponse{
Code:false,
Msg:"",
}
userInfo, err := service.CheckRegisterParams(ctx, in)
if err != nil{
res.Msg = err.Error()
return res, err
}
if service.IsBlackIp(ctx, in.UserIp){
res.Msg = "用户在黑名单中"
return res, errors.New("用户在黑名单中")//报painc的错
return res, err//不报错
}
err = service.Register(ctx, in.User, in.DeviceNo, in.Ip, in.Port, userInfo)
if err != nil{
res.Msg = err.Error()
return res, err
}
res.Code = true
res.Msg = "OK"
return res, nil
}
详细报错信息如下:
--- FAIL: TestRegiser (0.01s)
session_test.go:70: fail, rpc error: code = Unknown desc = 用户在黑名单中
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x14730d0]
goroutine 5 [running]:
testing.tRunner.func1(0xc4201923c0)
/usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:742 +0x29d
panic(0x15028e0, 0x18f2c40)
/usr/local/Cellar/go/1.10/libexec/src/runtime/panic.go:505 +0x229
session/test.TestRegiser(0xc4201923c0)
/Users/xxxx/devsoft/go/src/session/test/session_test.go:72 +0x270
testing.tRunner(0xc4201923c0, 0x15d2e78)
/usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:777 +0xd0
created by testing.(*T).Run
/usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:824 +0x2e0 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
自导自演。 普通会员 1楼
这个错误是因为你试图创建一个错误对象,但是这个对象还没有被初始化或者已经被初始化为一个错误。在Go语言中,你可以使用
errors.New()来创建一个错误对象,但是你需要确保这个对象已经被初始化,否则你可能会得到一个未初始化的错误对象。例如,你可以这样做:
go func main() { // 这里有一个错误,但我们可以使用errors.New()来创建一个错误对象 var err error if err = errors.New("MyError"); err != nil { // 如果这个错误对象不是未初始化的,我们就打印错误信息 fmt.Println("Error:", err) } }在这个例子中,我们首先声明了一个错误变量
err,然后使用errors.New()来创建一个错误对象。如果这个错误对象不是未初始化的,我们就打印错误信息。如果
err是一个已经初始化的错误对象,那么errors.New()就只会返回一个未初始化的错误对象。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
