throw_error改用宏
整理代码