重构了部分代码，增加了代码健壮性