我正在使用某些第三方功能,我不知道它们可以产生哪些类型的错误。
我想捕获并记录所有此类错误,但ErrorType协议没有任何可以提供有意义的消息或错误代码的成员。如何正确记录任何类型的错误?
do {
try someFunction()
} catch WellKnownError { // handle it }
} catch let err {
let message = ... // how can I get error type and some meaningful message from err?
NSLog(message)
}
答案 0 :(得分:0)
我认为这不是一个选择...
但你可以尝试这样的事情......
//----------------------------------------
// Private API
//----------------------------------------
public enum CarError : ErrorType
{
case NeverTurnOn
case OutOfFuel
case Other(String)
}
public class Car
{
public func turnOn(newState:Int) throws -> Bool
{
if newState == 1
{
throw CarError.NeverTurnOn
}
else if case 2...5 = newState
{
throw CarError.OutOfFuel
}
else if newState == 10
{
throw CarError.Other("Something is gonna wrong")
}
else if newState == 11
{
throw CarError.Other(":(")
}
return false
}
}
错误处理
func main()
{
let car = Car()
do {
try car.turnOn(4)
} catch CarError.NeverTurnOn {
print("Turn off")
} catch let err as NSError {
print(err.description)
} catch {
print("It's madness!!!")
}
}
main()
通过这个测试...我得到了这个结果......
//Error Domain=trycatchtest.CarError Code=1 "The operation couldn’t be completed. (trycatchtest.CarError error 1.)"
//Program ended with exit code: 0
这不是解决问题的最佳方法,而是了解此框架背景中发生的事情的新方法。
现在,请求帮忙。
请告诉我最后的结果;)
如果结果好或坏,这并不重要。