add error handle function