我只有24分了,全送出了,如何自定义异常捕捉问题 ( 积分: 24 )

  • 主题发起人 主题发起人 handsome1234
  • 开始时间 开始时间
H

handsome1234

Unregistered / Unconfirmed
GUEST, unregistred user!
function exaple0(x,y,real):real;
begin
try
result:=x/y;
except
on EInvalidOp do result:=0;
on EZeroDivide do result:=0;
on EOverFlow do result:=0;
on EUnderDivide do result:=0;
end;
end;
这个是很简单的,我的意识是如何自定义类似EInvalidOp,EZeroDivide这个东西,希望大家给点代码。
 
function exaple0(x,y,real):real;
begin
try
result:=x/y;
except
on EInvalidOp do result:=0;
on EZeroDivide do result:=0;
on EOverFlow do result:=0;
on EUnderDivide do result:=0;
end;
end;
这个是很简单的,我的意识是如何自定义类似EInvalidOp,EZeroDivide这个东西,希望大家给点代码。
 
program Project1;
{$APPTYPE CONSOLE}

uses
SysUtils;

type
EResultTooBig = class(Exception) // 异常类1
end;
EResultTooSmall = class(Exception) // 异常类2
end;
{ EOtherException = class(Exception) // 异常类3
end
}

var
ResultNum: Integer;

begin
ResultNum := 99;//输入测试数据
try // 尝试运行
if ResultNum >= 100 then // 如果数据太大,抛出异常
raise EResultTooBig.Create('Too Big')
else if ResultNum <= -1 then // 如果数据太小,抛出异常
raise EResultTooSmall.CreateFmt( '数据不可以小于0.',[])
{ else
raise EOtherException.Create('其他错误!');//抛处其他异常}
except
on EResultTooBig do Writeln( '错误:返回值不可以大于100。' );
on EResultTooSmall do Writeln ( '错误:返回值不可以小于0。' );
{else
Writeln ( '错误:其它运行时错误。')
// 其他异常 }
end;
Readln;

end.
 
唉,被ak_2005抢到分了。。。
其实就是自己从Exception派生一个类
然后自己raise就行了

分数就不要给我了。
 
后退
顶部