程序运行的过程中,难免会有 bug 导致异常触发,为了更好地记录和告知 bug,我们需要对 bug 进行捕获和统一的处理。
DFC::ErrorRecord 就是这样的接口,当程序出现 bug 时,会通知用户(下图),并进行日志记录(DFC::Log),方便开发者进行追踪和跟进。

错误记录接口文档可进入该地址查看:接口文档
begin
# execute code
rescue StandardError => error
# 例:DFC::ErrorRecord.record('室内-楼地面装饰-拾取', error)
# 例:DFC::ErrorRecord.record('室内-楼地面装饰-网格生成', error)
DFC::ErrorRecord.record('XXX-XXX', error)
end
由于 SketchUp 的 tool、定时器、对话框等是异步编程,所以一次 begin...rescue...end 无法捕获所有异常。
因此在所有的异步触发的代码块中,都需要进行异常捕获。
# 错误的写法
# 无法捕获到定时器方法块里边的错误
begin
UI.start_timer(0.0, false) do
# execute code
end
rescue StandardError => error
DFC::ErrorRecord.record('XXX-XXX', error)
end
# 正确的写法
# 以下仅作为示范,一般情况下,一句 UI.start_timer(0.0, false) 没必要进行异常捕获
begin
UI.start_timer(0.0, false) do
begin
# execute code
rescue StandardError => error
DFC::ErrorRecord.record('XXX-XXX', error)
end
end
rescue StandardError => error
DFC::ErrorRecord.record('XXX-XXX', error)
end