我想在 Swift 中做一些我习惯用多种其他语言做的事情:使用自定义消息引发运行时异常。例如(在 Java 中):
throw new RuntimeException("A custom message here")
我知道我可以抛出符合 ErrorType 协议的枚举类型,但我不想为我抛出的每种错误类型定义枚举。理想情况下,我希望能够尽可能地模仿上面的例子。我研究了创建一个实现ErrorType 协议的自定义类,但我什至无法弄清楚该协议需要什么。想法?
最简单的方法可能是定义 一个 自定义enum,其中只有case一个String附加了一个自定义:
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类型,最通用的类型是 an NSError,您可以创建一个工厂方法来创建并使用自定义消息抛出一个。
Error
NSError