passwd: use exceptions