typestar

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

  1. EOverdraft = class(Exception) declara un error de dominio que no agrega nada a su padre.
  2. raise EOverdraft.CreateFmt('short by %.2f', [Amount - Balance]) formatea el mensaje al lanzar.
  3. El on E: EOverdraft do del llamador imprime E.Message tras el primer retiro exitoso.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Excepciones; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →