我想在SWIFT中做一些我在其他多种语言中习惯做的事情:抛出带有自定义消息的运行时异常.例如(在Java中):
throw new RuntimeException("A custom message here")
我知道我可以抛出符合ErrorType协议的枚举类型,但我不想为抛出的每一种类型的错误定义枚举.理想情况下,我希望能够尽可能地模仿上面的示例.我考虑创建一个实现ErrorType protocol的自定义类,但我甚至不知道该协议需要什么.pip ?
我想在SWIFT中做一些我在其他多种语言中习惯做的事情:抛出带有自定义消息的运行时异常.例如(在Java中):
throw new RuntimeException("A custom message here")
我知道我可以抛出符合ErrorType协议的枚举类型,但我不想为抛出的每一种类型的错误定义枚举.理想情况下,我希望能够尽可能地模仿上面的示例.我考虑创建一个实现ErrorType protocol的自定义类,但我甚至不知道该协议需要什么.pip ?
最简单的方法可能是定义one个自定义enum
,其中只有一个case
附加了String
:
enum MyError: ErrorType {
case runtimeError(String)
}
或者,从Swift 4开始:
enum MyError: Error {
case runtimeError(String)
}
示例用法如下:
func someFunction() throws {
throw MyError.runtimeError("some message")
}
do {
try someFunction()
} catch MyError.runtimeError(let errorMessage) {
print(errorMessage)
}
如果您希望使用现有的Error
个类型,最通用的类型是NSError
,您可以创建一个工厂方法来创建并抛出一个带有自定义消息的类型.