试着用Swift、Can'捕捉;我想不出来

试着用Swift、Can'捕捉;我想不出来,swift,try-catch,do-catch,Swift,Try Catch,Do Catch,我试图将以下内容放入do-try-catch块中,但最终总是出现编码错误。有人能帮我吗 let here = CGRect(x: UIScreen.main.bounds.width - 30, y: 80, width: 10, height: 10) DispatchQueue.main.asyncAfter(deadline: .now() + 2) { let popTip = PopTip() popTip.show(t

我试图将以下内容放入do-try-catch块中,但最终总是出现编码错误。有人能帮我吗

 let here = CGRect(x: UIScreen.main.bounds.width - 30, y: 80, width: 10, height: 10)
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            let popTip = PopTip()
            popTip.show(text: "Font Sizes", direction: .down, maxWidth: 200, in: (self.navigationController?.view)! , from: here, duration: 3)
        }

您的问题是,您没有实际抛出错误的内容(即标记为
try
)。我无法完全理解您在评论中所说的话,但是我相信您可以在不使用
do catch
子句的情况下解决这个问题,但使用
警卫让
语句检查
self.navigationController.view
是否为
nil
如果为
nil
,只需
返回
函数。

只能捕获
抛出
的API。正确处理可选项。我在popTip.Show行中得到一个错误。这是因为navigationController由于调度而不可用,并且用户在异步任务执行之前在延迟3秒后移动到另一个控制器。那我该怎么办呢?很抱歉给你添麻烦了。我花了好几个小时想弄明白。我终于放弃了,这很有魅力。我大部分是自学成才的程序员,但我的成功归功于StackOverflow上的合作程序员。非常感谢。帮助像我这样自学成才的程序员总是一件很高兴的事!!