begin if Exponent=0.0 then if base <> 0.0 then result:=1.0 else InvalidArgument else if (base=0.0) and (exponent>0.0) then result:=0.0 else if (abs(exponent)<=maxint) and (frac(exponent)=0.0) then result:=intpower(base,trunc(exponent)) else if base>0.0 then result:=exp(exponent * ln (base)) else InvalidArgument; end;
(InvalidArgument как раз и бросает Exception)... Видишь, что произойдет, если дробная часть экспоненты ненулевая? Исключение выброшено не будет... А попробуй