【发布时间】:2016-09-11 16:44:56
【问题描述】:
我想从 Swift 异常处理程序生成一个 NSAlert 样式的错误表。过去使用 Objective-C 我可以简单地使用 [NSAlert alertWithError:] 现在使用 Swift 和它自己的异常处理系统,警报感觉相当笨拙:
enum Problems: ErrorType {
case Bad
case Worse
}
func f() throws {
throw Problems.Worse
}
func g() {
let errorMessage: String
do {
try f()
}
catch Problems.Bad {
errorMessage = "This was bad"
}
catch Problems.Worse {
errorMessage = "This was even worse"
}
catch {
errorMessage = "This was unexpected"
}
guard errorMessage == nil else {
let alert = NSAlert()
alert.messageText = "Error"
alert.informativeText = errorMessage
alert.beginSheetModalForWindow(self, completionHandler: { [unowned self] (returnCode) -> Void in
if returnCode == NSAlertFirstButtonReturn {
// Handle the response
}
})
}
这感觉很笨拙,并且如果必须检查许多错误条件,它就不能很好地扩展。有没有更好的办法?
【问题讨论】:
标签: swift macos exception error-handling alert