小编gho*_*ear的帖子

恐慌:错误:*目标必须是 Go 中的接口或实现错误

我正在 Go 中制作一个 json 解组错误处理函数:

import "github.com/pkg/errors"

func parseJSONError(err error) {
    var uterr json.UnmarshalTypeError

    if errors.As(err, &uterr) {
        //...
        return
    }

    var serr json.SyntaxError

    if errors.As(err, &serr) {
        //...
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

但有一种恐慌errors.As()panic: errors: *target must be interface or implement error

我们可以从github.com/pkg/errors 文档中了解 target 是什么:

func As(err error, target interface{}) bool

问题在于两者json.UnmarshalTypeError实际上json.SyntaxError都实现了该error接口。我们可以从encoding/json文档中了解到。所以我不知道我做错了什么。即使显式转换uterrand serrto 也interface{}不能挽救这种情况。

恐慌发生在标准包github.com/pkg/errors和标准errors包中。

error-handling go

6
推荐指数
1
解决办法
4759
查看次数

std :: pair是否会破坏其动态分配的对象?

例如,像容器之类的容器std::vector<T*>销毁了所有由其添加的元素push_back(new T)。不会std::pair<T1*, T2*>做同样的,当你初始化它像{ new T1, new T }

我有这个问题,因为这std::pair是一种与类容器不同的结构(它仍然没有任何意义)。我找不到有关它的任何信息。

编辑:尽管我认为容器是delete它们动态分配的元素,但这是错误的。

c++ stl

4
推荐指数
2
解决办法
93
查看次数

标签 统计

c++ ×1

error-handling ×1

go ×1

stl ×1