Exception stack trace support also for normal JS and not only NodeJS

This commit is contained in:
Ondrej Pokorny 2024-12-09 15:42:29 +01:00
parent 8bd9ed19c2
commit 5b1e486aba
2 changed files with 4 additions and 11 deletions

View File

@ -882,18 +882,14 @@ type
TJSError = Class external name 'Error' (TJSObject) TJSError = Class external name 'Error' (TJSObject)
private private
FMessage: String; external name 'message'; FMessage: String; external name 'message';
{$ifdef NodeJS}
FStack: JSValue; external name 'stack'; FStack: JSValue; external name 'stack';
{$endif}
Public Public
Constructor new; Constructor new;
Constructor new(Const aMessage : string); Constructor new(Const aMessage : string);
Constructor new(Const aMessage,aFileName : string); Constructor new(Const aMessage,aFileName : string);
Constructor new(Const aMessage,aFileName : string; aLineNumber : NativeInt); Constructor new(Const aMessage,aFileName : string; aLineNumber : NativeInt);
Property Message : String Read FMessage; Property Message : String Read FMessage;
{$ifdef NodeJS}
Property Stack: JSValue read FStack; Property Stack: JSValue read FStack;
{$endif}
end; end;
TJSPromise = class; TJSPromise = class;

View File

@ -116,9 +116,7 @@ type
private private
fMessage: String; fMessage: String;
fHelpContext: Integer; fHelpContext: Integer;
{$ifdef NodeJS} FJSError: TJSError;
FNodeJSError: TJSError;
{$endif}
public public
class var class var
LogMessageOnCreate : Boolean; LogMessageOnCreate : Boolean;
@ -130,8 +128,9 @@ type
function ToString: String; override; function ToString: String; override;
property HelpContext: Integer read fHelpContext write fHelpContext; property HelpContext: Integer read fHelpContext write fHelpContext;
property Message: String read fMessage write fMessage; property Message: String read fMessage write fMessage;
property JSError: TJSError read FJSError write FJSError;
{$ifdef NodeJS} {$ifdef NodeJS}
property NodeJSError: TJSError read FNodeJSError write FNodeJSError; property NodeJSError: TJSError read FJSError write FJSError; deprecated 'Use JSError';
{$endif} {$endif}
end; end;
@ -3034,9 +3033,7 @@ end;
constructor Exception.Create(const Msg: String); constructor Exception.Create(const Msg: String);
begin begin
fMessage:=Msg; fMessage:=Msg;
{$ifdef nodejs} FJSError:=TJSError.new;
FNodeJSError:=TJSError.new;
{$endif}
if LogMessageOnCreate then if LogMessageOnCreate then
Writeln('Created exception ',ClassName,' with message: ',Msg); Writeln('Created exception ',ClassName,' with message: ',Msg);
end; end;