let caller handle exception