Estoy pidiendo Delphi nativo, no Prisma (neto).¿Cómo plantear excepciones en Delphi?
Este es mi código:
raise Exception.Create('some test');
idenitifier Undeclarated "excepción".
¿Cuál es el problema, cómo puedo lanzar/levantar excepciones?
Estoy pidiendo Delphi nativo, no Prisma (neto).¿Cómo plantear excepciones en Delphi?
Este es mi código:
raise Exception.Create('some test');
idenitifier Undeclarated "excepción".
¿Cuál es el problema, cómo puedo lanzar/levantar excepciones?
La clase de excepción "Excepción" se declara en la unidad SysUtils. Por lo tanto, debe agregar "SysUtils" a su cláusula uses.
uses
SysUtils;
procedure RaiseMyException;
begin
raise Exception.Create('Hallo World!');
end;
Usted está usando SysUtils ¿no es así? La excepción se declara allí IIRC.
Es posible que deba agregar sysutils a la cláusula uses, no está incorporado y es opcional de acuerdo con Delphi en pocas palabras.
Recuerde agregar SYSUTILS a sus unidades de usos.
También se sugieren una buena manera de mantener un registro de las categorías, formatos de MENSAJES y significado de excepción:
Type TMyException=class
public
class procedure RaiseError1(param:integer);
class procedure RaiseError2(param1,param2:integer);
class procedure RaiseError3(param:string);
end;
implementation
class procedure TMyException.RaiseError1(param:integer);
begin
raise Exception.create(format('This is an exception with param %d',[param]));
end;
//declare here other RaiseErrorX
Una forma sencilla de utilizar esto es:
TMyException.RaiseError1(123);
ya existe 'Exception.CreateFmt' que admite Format con una matriz de const – mjn
@mjn, pero hace que la vida de los clientes (el código que usa' TMyException') sea mucho más fácil: simplemente pase los parámetros y el el resto se realizará en 'TMyException'. –
@EdwinYip lo que quiero decir es que 'raise Exception.create (format ('Esta es una excepción con param% d', [param]));' puede acortarse para 'raise Exception.CreateFmt ('Esta es una excepción con param% d ', [param]); 'que hace lo mismo con menos pulsaciones de teclas – mjn
Para referencia futura, Los errores de "identificador no declarado" se pueden resolver con frecuencia buscando en el código fuente incluido el identificador que le interesa. Esto le indicará dónde se ha declarado y también podría brindar ejemplos de cómo usarlo. –
En D2006 + (¿quizás en 2005?) Puede usar la opción "Refactoring -> Buscar unidad" del menú del botón derecho para agregar la unidad requerida a su cláusula uses. –
Gerry: ¡un fabuloso consejo añadido! ... Me da vergüenza decir que nunca había notado esa característica. Muy genial. :) – Jamo