更新了逻辑以及捕捉一些异常