fix #29 handle IO error