在Swift中调用NSException.raise()

Mar*_*gan 11 swift

我试图通过调用NSException.raise()在Swift中引发异常.定义是:

class func raise(_ name: String!, format format: String!, arguments argList: CVaListPointer)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以下内容时:

NSException.raise("Exception", format:"Error: %@", arguments:getVaList([error]))
Run Code Online (Sandbox Code Playgroud)

我得到编译错误:调用中的额外参数'format'.

我有什么想法我做错了吗?我正在使用XCode 6 Beta 5.

Mar*_*gan 19

问题似乎是我没有将错误视为可选项.以下作品:

var error: NSError?
NSException.raise("Exception", format:"Error: %@", arguments:getVaList([error!]))
Run Code Online (Sandbox Code Playgroud)

或者,如果错误为零,您可以执行以下操作:

NSException.raise("Exception", format:"Error: %@", arguments:getVaList([error ?? "nil"]))
Run Code Online (Sandbox Code Playgroud)


zap*_*aph 18

var e = NSException(name:"name", reason:"reason", userInfo:["key":"value"])
e.raise()
Run Code Online (Sandbox Code Playgroud)

要么:

var e = NSException(name:"name", reason:"reason", userInfo:nil)
e.raise()
Run Code Online (Sandbox Code Playgroud)

要么:

NSException(name:"name", reason:"reason", userInfo:nil).raise()
Run Code Online (Sandbox Code Playgroud)