是否可以在Swift中自动注入异常处理代码?
Is it possible to automatically inject exception handling code in Swift?
我们的代码库中有很多区域可供开发人员执行以下操作:
try {
// code
} catch let error {
print("error \(error)")
}
控制台记录错误并不是很有帮助,虽然做得更好会很棒,但人们仍然这样做。
我想知道是否可以自动将代码添加到异常处理程序中...最好是在构建时注入代码。这纯粹是为了跟踪,看看我们丢弃了哪些类型的错误。
(我知道一种解决方案是禁止这种事情发生,但我们也只想进行一般异常处理以查看出现的异常类型)。
如果此时不想记录错误,可以不捕获错误,让错误冒泡。标记方法 throws
并且不要将其放在 try
块中。然后你只能在顶层登录(或做其他事情)。
或者,您可以使用函数包装块:
func trylog(_ f: () throws -> Void) {
do {
try f()
} catch {
print(error)
}
}
然后在 trylog
中,如果您愿意,您可以做其他事情而不是 print
。
Swift try/catch
并不是真正的 "exceptions." 它们只是围绕 error-return 的一种特殊语法。这意味着没有花哨的运行时机制可以挂钩(这很像每次调用 return
时挂钩)。
虽然控制台日志记录不是很有用,因为您无法在设备上轻松访问它们,但我认为在几乎所有情况下,"just log it" 都是正确的选择catch
块。我很少遇到在移动应用程序中可以做更有用的事情的情况。开发者对 "just log it," 感到内疚,但如果你是 "doing it right," 你会怎么做?我只建议将 print
替换为更多 feature-rich 记录器,这样您就可以从中获得一些价值,或者至少将 print
包装在您自己的函数中,以便稍后将其换出更好的东西。
我们的代码库中有很多区域可供开发人员执行以下操作:
try {
// code
} catch let error {
print("error \(error)")
}
控制台记录错误并不是很有帮助,虽然做得更好会很棒,但人们仍然这样做。
我想知道是否可以自动将代码添加到异常处理程序中...最好是在构建时注入代码。这纯粹是为了跟踪,看看我们丢弃了哪些类型的错误。
(我知道一种解决方案是禁止这种事情发生,但我们也只想进行一般异常处理以查看出现的异常类型)。
如果此时不想记录错误,可以不捕获错误,让错误冒泡。标记方法 throws
并且不要将其放在 try
块中。然后你只能在顶层登录(或做其他事情)。
或者,您可以使用函数包装块:
func trylog(_ f: () throws -> Void) {
do {
try f()
} catch {
print(error)
}
}
然后在 trylog
中,如果您愿意,您可以做其他事情而不是 print
。
Swift try/catch
并不是真正的 "exceptions." 它们只是围绕 error-return 的一种特殊语法。这意味着没有花哨的运行时机制可以挂钩(这很像每次调用 return
时挂钩)。
虽然控制台日志记录不是很有用,因为您无法在设备上轻松访问它们,但我认为在几乎所有情况下,"just log it" 都是正确的选择catch
块。我很少遇到在移动应用程序中可以做更有用的事情的情况。开发者对 "just log it," 感到内疚,但如果你是 "doing it right," 你会怎么做?我只建议将 print
替换为更多 feature-rich 记录器,这样您就可以从中获得一些价值,或者至少将 print
包装在您自己的函数中,以便稍后将其换出更好的东西。