我在 Swift 中有一个函数,如下所示:
@IBAction func doSomething(_ sender: AnyObject) { }
我需要sender
是 NSMenuItem
型,所以我用警卫检查它:
guard let menuItem = sender as? NSMenuItem else { return }
但是,如果我的应用程序逻辑中存在一些严重错误,这将静默地让应用程序继续,从而导致传递不同的对象类型。只是使应用程序崩溃,而不是向用户"呈现"一个神秘的非工作功能,这不是更好吗?
检查和应对这些超基本假设的最佳方法是什么?
请注意,您可以像这样编写@IBAction
:
@IBAction func doSomething(_ sender: NSMenuItem)
sender
不必AnyObject
.
但在其他情况下,如果您想使用 guard
语句崩溃,您可以执行以下操作:
guard ... else { fatalError("a message") }
fatalError
返回Never
,因此可以在else
子句中使用。