turbo pascal 如何捕获处理异常

来源:百度知道 编辑:UC知道 时间:2024/06/21 11:20:35
program averageproduct (input, output);
{平均数与乘积}
const
n = 3;
var
temp: array [1 .. n] of real;
sum, average, product: real;
i: integer;
begin
sum := 0;
product := 1;
for i := 1 to n do
begin
writeln ('请输入第', i, '个数: ');
readln (temp [i]);
end;
for i := 1 to n do
begin
sum := sum + temp [i];
product := product * temp [i];
end;
average := sum / n;
writeln ('这', n, '个数的平均值是: ', average);
writeln ('这', n, '个数的乘积是: ', product);
readln;
end.
这是用turbo pascal 7.0编写的代码,全角文字是我在此临时

error106,如果没记错的话是存取非法
主要是因为你的real类型无法读入其他字符,可以这样改
var
temp:array[1..n]of string;是:real;
code:integer;{用来完成val过程,其他你说明过的变量略去}
begin
product:=1;
for i:=1 to n do
begin
writeln ('请输入第', i, '个数: ');
readln (temp [i]); {为了不出现存取非法错误,只好暂时将错就错,把对的错的一起先存起来,待日后分辨}
end;
for i:=1 to n do
begin
val(temp[i],s,code);
if code<>0 then writeln('第',i,'个字符不正常,不计入运算'){这里val语句一旦转换时出现错误,则code就自动为出现错误的字符位置,否则为0,我们可以根据这个特征来判断数字是否合法}
else begin
sum := sum + temp [i];
product := product * temp [i];
end;
end;
average := sum / n;
writeln ('这', n, '个数的平均值是: ', average);
writeln ('这', n, '个数的乘积是: ', product);
readln;
end.

try
{你的代码}
except
raise Exception.Create('异常信息');
end;