统一使用safe_call调用