gpt4 book ai didi

ios - 是否可以在 Swift 中自动注入(inject)异常处理代码?

转载 作者:行者123 更新时间:2023-11-28 15:54:35 26 4
gpt4 key购买 nike

我们的代码库中有很多区域可供开发人员执行以下操作:

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

控制台记录错误并不是很有帮助,虽然做一些更好的事情会很棒,但人们仍然这样做。

我想知道是否可以自动将代码添加到异常处理程序中……最好是在构建时注入(inject)代码。这纯粹是为了跟踪,看看我们丢弃了哪些类型的错误。

(我知道一种解决方案是禁止这种事情发生,但我们也只希望进行一般异常处理以查看出现的异常类型)。

最佳答案

如果此时不想记录错误,可以不捕获错误,让错误冒泡。标记方法 throws 并且不要将它放在 try block 中。然后您只能在顶层登录(或做其他事情)。

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

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

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

Swift try/catch 并不是真正的“异常”。它们只是围绕错误返回的特殊语法。这意味着没有花哨的运行时机制可以 Hook (这很像每次调用 return 时都 Hook )。

虽然控制台日志记录不是很有用,因为您无法在设备上轻松访问它们,但我认为在几乎所有情况下,“只记录它”是放入 catch block 。我很少遇到在移动应用程序中可以做更有用的事情的情况。开发人员对“只记录它”感到内疚,但如果你“做对了”,你究竟会怎么做?我只是建议用功能更丰富的记录器替换你的 print,这样你就可以从中获得一些值(value),或者至少将 print 包装在你自己的函数中,这样你就可以交换稍后再拿出来做些更好的事情。

关于ios - 是否可以在 Swift 中自动注入(inject)异常处理代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com