错误记录接口

程序运行的过程中,难免会有 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