[GELÖST] AL try catch?

21. April 2020 10:50

Hallo, gibt es in der AL Programmierung eig sowas wie ein try catch?

z.b. fehler abfangen wenn ein Datensatz mit einer Codeunit erstellt werden soll, aber schon ein datensatz da ist.

Mit Freundlichen Gruß
Zuletzt geändert von derPat19 am 21. April 2020 13:46, insgesamt 1-mal geändert.

Re: AL try catch?

21. April 2020 11:49

IF NOT xyz.INSERT THEN ....
oder auch
https://docs.microsoft.com/en-us/dynamics-nav/tryfunction-property

die Frage ist, was du erreichen willst

Re: AL try catch?

21. April 2020 11:58

es kommt bei mir ein fehler das ein datensatz net insertet werden kann, weil er schon da ist .... das kann ich doch mit einen try catch in anderen sprachen abfangen, das müsste ja auch theoretisch in AL gehen

Re: AL try catch?

21. April 2020 12:39

derPat19 hat geschrieben:es kommt bei mir ein fehler das ein datensatz net insertet werden kann, weil er schon da ist .... das kann ich doch mit einen try catch in anderen sprachen abfangen, das müsste ja auch theoretisch in AL gehen


solche globalen try..catch Blöcke gibt es in AL nicht.
Jede einzelne Funktion gibt ein TRUE zurück, wenn die Funktion fehlerfrei ausgeführt wurde, im Fehlerfall ein FALSE, so wie sweikelt es beschrieben hat.
Code:
if not rec.insert() then
  behandle fehler
else
  mach weiter


oder
Code:
ohneFehler := rec.insert()
if ohneFehler then
  mach weiter
else
  behandle Fehler

Re: AL try catch?

21. April 2020 12:54

derPat19 hat geschrieben:das kann ich doch mit einen try catch in anderen sprachen abfangen, das müsste ja auch theoretisch in AL gehen

Bei ERP-Systemen muss Transaktionssicherheit eines Gesamtprozesses gewährleistet sein, daher geht das nicht einfach so (u.U. mehrere uncommitted changes können beim Auflaufen auf den Fehler offen sein). Erläuterungen dazu aus Sicht von C/AL:
https://vjeko.com/2014/10/17/try-catch-in-cal/

Re: AL try catch?

21. April 2020 13:07

okay danke
Zuletzt geändert von derPat19 am 21. April 2020 13:46, insgesamt 1-mal geändert.

Re: AL try catch?

21. April 2020 13:46

... EDIT - da dein letzter Beistrag nun editiert wurde, hat man natürlich nicht mehr den Bezug auf die Frage...das nächste mal mach ich nen QUOTE ;)

Code:
IF confirm(....) THEN


oder

https://navision24.de/funktionen/dialog/strmenu.htmls

sorry das ich das jetzt schreibe, aber ich empfehle eine Schulung in AL/CAL

Re: AL try catch?

6. Mai 2020 12:11

sweikelt hat geschrieben:sorry das ich das jetzt schreibe, aber ich empfehle eine Schulung in AL/CAL


Alles gut, ja würde ich auch empfehlen, wenn mein Chef das zahlt =)

Re: AL try catch?

1. Februar 2023 17:41

Kowa hat geschrieben:Bei ERP-Systemen muss Transaktionssicherheit eines Gesamtprozesses gewährleistet sein, daher geht das nicht einfach so (u.U. mehrere uncommitted changes können beim Auflaufen auf den Fehler offen sein). Erläuterungen dazu aus Sicht von C/AL:
https://vjeko.com/2014/10/17/try-catch-in-cal/
Bitte beachten: Bei SaaS sind Schreiboperationen in Try Functions möglich :!: , die Dokumentation
Database write transactions in try methods
Because changes made to the database by a try method aren't rolled back, you shouldn't include database write transactions within a try method. By default, the Business Central Server configuration prevents you from doing this. If a try method contains a database write transaction, a runtime error occurs.
stimmt hier nicht mit dem Verhalten überein.
OnPrem gibt es den erwähnten Schalter DisableWriteInsideTryFunctions, als Vorgabe auf TRUE.
Thema bei Yammer: https://www.yammer.com/dynamicsnavdev/t ... 2136023040