En este artículo mostraré cómo emular un Try…Catch en Microsoft Dynamics 365 Business Central pues tal método no existe en AL y debemos emularlo.
Versión: 2021 Wave 1 (KID: 5007779)
Vamos a programar algo que sabemos que está mal:
trigger OnOpenPage()
var numero1 : integer;
numero2 : integer;
begin
numero1 := 10;
numero2 := 0;
Message(Format(numero1/numero2);
end;
Evidentemente, esto produce un error del tipo No se puede dividir por cero:
Para evitar esto debemos agregar un método que realice la acción y adornar el método con el atributo TryFunction:
[TryFunction]
local procedure ControlError(numero:integer)
begin
if (numero = 0) then
Error('la division por cero no esta permitida');
end;
Entonces, nuestro procedimiento quedaria así:
pageextension 50102 CustomerListExt extends "Customer List"
{
trigger OnOpenPage()
var
numero1: integer;
numero2: integer;
begin
numero1 := 10;
numero2 := 0;
if ControlError(numero2) then
Message(Format(numero1 / numero2))
else
Error('Hubo un error en el proceso');
end;
[TryFunction]
local procedure ControlError(numero:integer)
begin
if (numero = 0) then
Error('la division por cero no esta permitida');
end;
}
El resultado final, para nuestro ejemplo, seria:
La diferencia es que en este último caso, por más que haya error podemos seguir utilizando el sistema y no queda en estado inválido.
¡Espero resulte útil!