是否可以在Swift中自动注入异常处理代码?

时间:2017-01-30 20:42:07

标签: ios swift inject

我们的代码库有很多方面,开发人员可以这样做:

try {
   // code 
} catch let error {
   print("error \(error)")
}

控制台记录错误并不是非常有用,尽管做得更好,但人们仍然这样做。

我想知道的是,是否可以自动将代码添加到异常处理程序...理想情况下,在构建时注入代码。它纯粹是为了追踪,看看我们扔掉了哪些类型的错误。

(我知道一种解决方案是禁止这种事情,但我们也只是想要一般的异常处理来看看会出现什么类型的异常。)

1 个答案:

答案 0 :(得分:1)

如果您此时不想记录错误,可以通过不捕获它来让错误冒出来。标记方法throws,不要将其放在try块中。然后,您只能在顶层登录(或执行其他操作)。

或者,您可以使用函数包装块:

func trylog(_ f: () throws -> Void) {
    do {
        try f()
    } catch {
        print(error)
    }
}

然后在trylog,如果你愿意,你可以做其他事情,而不是print

Swift try/catch并非真正的“例外”。它们只是一个关于错误返回的特殊语法。这意味着没有花哨的运行时机制可以挂钩(它非常像每次调用return时挂钩)。

虽然控制台日志记录不是很有帮助,因为你无法在设备上轻松访问它们,但我认为在几乎所有情况下,“只记录它”是正确的放入{{{ 1}}阻止。我很少遇到一个在移动应用程序中有更多有用的事情的情况。开发者对“只记录它”感到内疚,但如果你“做得对”,你究竟会做什么?我建议您使用功能更丰富的记录器替换catch,这样您就可以从中获取一些价值,或至少将print包裹在您自己的功能中,这样您可以稍后将其更换为更好的内容