代码调整，考虑异常处理