Lanzar tu propia excepción en Delphi
Una regla de sobregiro que lanza su propia clase de excepción, atrapada donde ocurren los retiros.
program RaiseCustom;
uses SysUtils;
type
EOverdraft = class(Exception); // a domain error of your own
procedure Withdraw(Balance, Amount: Double);
begin
if Amount > Balance then
raise EOverdraft.CreateFmt('short by %.2f', [Amount - Balance]);
WriteLn(Format('paid %.2f, %.2f left', [Amount, Balance - Amount]));
end;
begin
try
Withdraw(120.00, 45.00);
Withdraw(75.00, 90.00); // breaks the rule, so the guard raises
except
on E: EOverdraft do // the caller decides what the rule means
WriteLn('declined: ' + E.Message);
end;
end.
Cómo funciona
EOverdraft = class(Exception)declara un error de dominio que no agrega nada a su padre.raise EOverdraft.CreateFmt('short by %.2f', [Amount - Balance])formatea el mensaje al lanzar.- El
on E: EOverdraft dodel llamador imprimeE.Messagetras el primer retiro exitoso.
Palabras clave y builtins usados aquí
DoubleFormatWriteLnbeginclassdoendexceptifonprocedureprogramraisethentrytypeuses
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 536
- Tokens
- 107
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 92 segundos.
Paso 3 de 3 en Excepciones; paso 24 de 27 en Fundamentos del lenguaje.