【发布时间】:2019-11-04 12:35:59
【问题描述】:
代码:
enum SHError: Error {
case InvalidInputError(code: Int, message: String, info: [String:Any]? = [:])
case InvalidProcessingError(code: Int, message: String, info: [String:Any]? = [:])
var debugDescription: String {
return "debug info: code: \(code)"
}
var localizedDescription: String {
return "description: \(self)"
}
}
如何在创建错误时访问调用者传递的属性?
【问题讨论】:
-
请不要将您的代码发布为打印屏幕,复制并粘贴它(并可能添加错误评论)
-
真正的麻烦是整个枚举设计得很糟糕。错误已经有代码,如果您还想要一条消息,您应该使用本地化错误。
-
enum案例没有任何意义。如果您想在声明/使用时分配code、message、info,而不是enum,您最好需要struct/class。更好的是,您已经拥有满足您所有要求的NSError类(NSError.init(domain: String, code: Int, userInfo: [String : Any]))。你可以查看这个官方documentation 了解如何使用enum进行错误处理。 -
@bazyl87 我还包含原始源代码
标签: swift error-handling compiler-errors nserror