use exception to handle errt :wqor