* improve exception in call_hook * refine unit test * add test_call_hook * refine * update docstring and ut