try-except en Delphi
Tres cadenas pasan por StrToInt; una no es un número y se maneja en vez de tumbar el programa.
program TryExcept;
uses SysUtils;
procedure Report(const Raw: string);
var Minutes: Integer;
begin
try
Minutes := StrToInt(Raw); // raises EConvertError on junk input
WriteLn(Format('%-6s %3d min', [Raw, Minutes]));
except
on E: EConvertError do // on-do names the class and the instance
WriteLn(Format('%-6s skipped: %s', [Raw, E.Message]));
end;
end;
begin
Report('45');
Report('4o'); // the handler runs, then the program carries on
Report('12');
end.
Cómo funciona
Minutes := StrToInt(Raw)lanzaEConvertErrorcuando el texto no es un entero.on E: EConvertError doatrapa esa sola clase y vincula la instancia aE.Report('4o')imprimeE.Messagey las llamadas que siguen corren igual.
Palabras clave y builtins usados aquí
FormatIntegerStrToIntWriteLnbeginconstdoendexceptonprocedureprogramstringtryusesvar
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 460
- Tokens
- 97
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 78 segundos.
Paso 2 de 3 en Excepciones; paso 23 de 27 en Fundamentos del lenguaje.