You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Describe the bug
Even when you have "breakOnError": "All" in launch.json, debugger still don't stop on the error statement if it is a collectible error.
There is an option to skip errors when they happen in TryFunction, but it is not obvious why debugger should skip collectible errors. Stop will only happen when you step out of collecting functions and after this it might still be hard to understand why you stopped there and where actual error has happened. Ability to skip collectible errors might be a usegfull option for breakOnError though. But not when All is selected.
pageextension50100 CollectingErrorsExt extends "Customer List"
{
actions
{
addfirst(processing)
{
// This action doesn't collect errors. Any procedure will stop on the first error that occurs,// and return the error.action(Post)
{
ApplicationArea = All;
trigger OnAction()var
i: RecordInteger;
begin
i.Number := -9;
Codeunit.Run(Codeunit::DoPost, i);
end;
}
// This action collects errors. The PostWithErrorCollect procedure continues on errors,// and displays the errors in a dialog to the user done.action(PostWithErrorCollect)
{
ApplicationArea = All;
trigger OnAction()begin
PostWithErrorCollect();
end;
}
// This action collects errors. The PostWithErrorCollectCustomUI procedure continues on errors,// and displays error details in a list page when done.// This implementation illustrates how you could design your own UI for displaying and// troubleshooting errors.action(PostWithErrorCollectCustomUI)
{
ApplicationArea = All;
trigger OnAction()begin
PostWithErrorCollectCustomUI();
end;
}
}
}
[ErrorBehavior(ErrorBehavior::Collect)]
procedure PostWithErrorCollect()var
i: RecordInteger;
begin
i.Number := -9;
Codeunit.Run(Codeunit::DoPost, i);
// After executing the codeunit, there will be collected errors,// and therefore an error dialog will be shown when exiting this procedure.end;
[ErrorBehavior(ErrorBehavior::Collect)]
procedure PostWithErrorCollectCustomUI()var
errors: Record "Error Message" temporary;
error: ErrorInfo;
i: RecordInteger;
begin
i.Number := -9;
// By using Codeunit.Run, you ensure any changes to the database within// Codeunit::DoPost are rolled back in case of errors.ifnotCodeunit.Run(Codeunit::DoPost, i) thenbegin// If Codeunit.Run fails, a non-collectible error was encountered,// add this to the list of errors.
errors.ID := errors.ID + 1;
errors.Description := GetLastErrorText();
errors.Insert();
end;
// If there are collected errors, iterate through each of them and// add them to "Error Message" record.if HasCollectedErrors thenforeach error in system.GetCollectedErrors() dobegin
errors.ID := errors.ID + 1;
errors.Description := error.Message;
errors.Validate("Record ID", error.RecordId);
errors.Insert();
end;
// Clearing the collected errors will ensure the built-in error dialog// will not show, but instead show our own custom "Error Messages" page.
ClearCollectedErrors();
page.RunModal(page::"Error Messages", errors);
end;
}
codeunit50100 DoPost
{
TableNo = Integer;
trigger OnRun()beginif Number mod2 <> 0then
Error(ErrorInfo.Create('Number should be equal', true, Rec, Rec.FieldNo(Number)));
if Number <= 0then
Error(ErrorInfo.Create('Number should be larger than 0', true, Rec, Rec.FieldNo(Number)));
if Number mod3 = 0then
Error(ErrorInfo.Create('Number should not be divisible by 10', true, Rec, Rec.FieldNo(Number)));
// Everything was valid, do the actual posting.end;
}
3. Expected behavior
Debugger stops on each error statement
4. Actual behavior
Debugger stops after PostWithErrorCollect finishes.
1. Describe the bug
Even when you have
"breakOnError": "All"
in launch.json, debugger still don't stop on theerror
statement if it is a collectible error.There is an option to skip errors when they happen in TryFunction, but it is not obvious why debugger should skip collectible errors. Stop will only happen when you step out of collecting functions and after this it might still be hard to understand why you stopped there and where actual error has happened. Ability to skip collectible errors might be a usegfull option for
breakOnError
though. But not whenAll
is selected.2. To Reproduce
"breakOnError": "All"
in launch.jsonPostWithErrorCollect
action3. Expected behavior
Debugger stops on each error statement
4. Actual behavior
Debugger stops after
PostWithErrorCollect
finishes.5. Versions:
Version: 1.92.2 (user setup)
Commit: fee1edb8d6d72a0ddff41e5f71a671c23ed924b9
Date: 2024-08-14T17:29:30.058Z
Electron: 30.1.2
ElectronBuildId: 9870757
Chromium: 124.0.6367.243
Node.js: 20.14.0
V8: 12.4.254.20-electron.0
OS: Windows_NT x64 10.0.22631
The text was updated successfully, but these errors were encountered: