Swift 如何捕获并记录所有错误?
我正在使用一些第三方函数,我不知道它们会产生什么类型的错误 我希望捕获并记录所有此类错误,但ErrorType协议没有任何成员可以提供有意义的消息或错误代码。如何正确记录任何类型的错误Swift 如何捕获并记录所有错误?,swift,Swift,我正在使用一些第三方函数,我不知道它们会产生什么类型的错误 我希望捕获并记录所有此类错误,但ErrorType协议没有任何成员可以提供有意义的消息或错误代码。如何正确记录任何类型的错误 do { try someFunction() } catch WellKnownError { // handle it } } catch let err { let message = ... // how can I get error type and some meaning
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)
}
我认为这不是一个选择 但是你可以试试这样的
//----------------------------------------
// 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
这不是解决问题的最佳方法,而是了解此框架背景下发生的事情的新方法
现在,请你帮个忙
请告诉我最后的结果;)
结果是好是坏并不重要。我认为这不是一个选项 但是你可以试试这样的
//----------------------------------------
// 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
这不是解决问题的最佳方法,而是了解此框架背景下发生的事情的新方法
现在,请你帮个忙
请告诉我最后的结果;)
结果是好是坏并不重要