caul异常采用builder模式