加入错误处理，回调的第一个参数为err