【问题标题】:factoring catch clause in try catch在 try catch 中考虑 catch 子句
【发布时间】:2016-05-08 20:33:21
【问题描述】:

我的程序有多个 do-try-catch 子句,但我始终使用相同的 catch 函数,我该如何将其分解?

例如

func tryCatch1 {
   do{
     try something.save
   }catch let error as UserError{
     print(error.description)
   }
}


// Another try catch

func tryCatch2 {

       do{
         try somethingAgain.save
       }catch let error as UserError{
         print(error.description)
       }
 }

是否可以创建类似 "universal catch"

【问题讨论】:

  • 为什么要捕获低级函数?简单地抛出异常。通常最好在最高级别捕获异常
  • @Paulw11 你能进一步解释一下吗?
  • 以这种方式使用 try/catch 是没有意义的,不是吗?如果你不做一些有用的事情,你还不如使用 try!并且至少用户注意到出了问题。
  • @gnasher729 这只是一个例子来说明我的意思。

标签: ios swift error-handling try-catch


【解决方案1】:

如果您发现自己一遍又一遍地输入相同的样板代码,您可能想要创建一个 Xcode“代码片段”,并使用简单的字符序列调用它。

在 Xcode 中,打开右侧的“实用程序”面板(您可以使用右上角的三个小方形图标中的最后一个)。

在下半部分是您通常选择 UI 对象的部分:单击名为“显示代码 sn-p 库”的 { } 图标。您现在可以看到预制的 sn-ps 列表。

要制作你的,请在 Xcode 中用鼠标选择你的代码,并完成缩进:

do {

} catch let error as UserError {
    print(error.description)
}

然后拖动选中的代码到sn-ps部分(拖动时可以按住ALT(选项)键查看帮助)

sn-ps 部分突出显示:删除选择,它会在底部创建一个新的 sn-p。

点击它,点击编辑:制作自己的标题、描述、快捷方式等

现在每次在您的代码中,在所选范围内,当您键入快捷方式时,它都会被 sn-p 替换。

如果我的 sn-p 有一个“dtc”的快捷方式(只是一个例子,选择不会干扰你的代码或 Swift 关键字的东西),我只需要输入“dtc”并且“dtc”被替换为来自 sn-ps 的整个 Do-Try-Catch 块。

【讨论】:

  • 谢谢,这是一个非常方便的技巧!但是为什么要按住“Alt”,即使我没有按住alt,我的作品也可以,只需单击并拖动即可。
  • 不客气。你说得对,ALT 不是强制性的,我只是想强制执行它,因为它将鼠标光标从选择器更改为十字 - 我发现它有助于拖动文本。
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 2017-09-22
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2013-04-15
  • 2013-06-27
相关资源
最近更新 更多