我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。
演示版
type Error struct {
ErrString string
}
func (e *Error) Error() string {
return e.ErrString
}
func Wrap(err error, str string) *Error {
if err == nil {
return nil
}
e := &Error{
ErrString: str + err.Error(),
}
return e
}
当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。
预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。
func foo() error {
err := bar()
return Wrap(err, "bar called")
}
func bar() error {
return nil
}
func main() {
err := foo()
if err != nil {
fmt.Printf("Found error %v\n",err)
return
}
fmt.Println("No Errors")
}
我希望它能打印出来No errors
。而是Found error <nil>
即使错误为nil也会打印。
if err != nil
正在将err变量与nil进行比较error
,但实际上它是nil*Error
将代码更改为
err:=foo()
var nilerror *Error = nil
if err != nilerror {
fmt.Printf("Found error %v\n",err)
return
}
fmt.Println("No Errors")
产生预测结果。
问题内容: 我正在使用CIFilters将图像转换为灰度并应用一些图像处理效果。在UIImageView中显示输出有效;图像将显示,并且已按预期进行了修改。 但是,每次调用UIImageJPEGRepresentation似乎都不返回任何数据。它永远都行不通。使用原始彩色图像调用UIImageJPEGRepresentation效果很好。 这里发生了什么?为什么在显示图像时jpeg转换会失败?不会
问题内容: 我是Java开发人员,正在学习Go。我正在为LIFO堆栈编写简单的“ pop”操作。问题是堆栈中没有值时的返回值。在Java中,我可以在肯定的情况下返回wrapper(Integer),并且在没有值的情况下返回null。从我的角度来看这很自然。 如何在Go中做类似的事情?是否有用于原语的结构包装器?我是否需要返回两个值(第二个将指示错误代码)?还是我需要抛出异常? 现在是这样的: 是好
问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名
我正在尝试使用NSKeyDarchiver在应用程序关闭和运行周期之间存储数据。我试图存储的根对象是一个NSMutableArray,但在这个对象中有基础对象和自定义对象的集合(所有这些都符合NSCoding)。 文件保存代码如下 该文件保存fine并且不会抛出异常。再次启动应用程序时,使用以下代码恢复该文件。 在这一点上,sessionData总是为零,而pData是几千字节长的,因此我知道问题
问题内容: 在使用时,我正在获取一些价值。我搜寻了很多,但徒劳无功。 以下是我的代码: 输出控制台: 所有日期字符串的格式都是相同的,但对于几个值我还是没有。为什么这样?请帮忙。我哪里错了? 问题答案: 格式应该是24小时的 HH ,即使您只获得12小时的值。
我们正在尝试从一个“SecKey”创建一个“SecKey”。der文件。但是' SecKeyCreateWithData '总是抛出' Nil '错误。 遵循的步骤: 首先,我们创建了一个 ECDSA 私有 用于生成私有命令 OpenSSL EC param-genkey-name prime 256 v1-no out EC-key-pair . PEM openssl ec-in ec密钥对