فهرست منبع

nodepas2js: exception handling with stacktrace

git-svn-id: trunk@40139 -
Mattias Gaertner 6 سال پیش
والد
کامیت
db4f11201a
1فایلهای تغییر یافته به همراه16 افزوده شده و 0 حذف شده
  1. 16 0
      packages/pastojs/src/pas2jscompiler.pp

+ 16 - 0
packages/pastojs/src/pas2jscompiler.pp

@@ -2773,6 +2773,7 @@ procedure TPas2jsCompiler.HandleJSException(Msg: string; E: jsvalue;
   TerminateInternal: boolean);
   TerminateInternal: boolean);
 var
 var
   obj: JS.TJSObject;
   obj: JS.TJSObject;
+  Exc: Exception;
 begin
 begin
   if isObject(E) then
   if isObject(E) then
   begin
   begin
@@ -2784,6 +2785,21 @@ begin
         writeln(obj['stack']);
         writeln(obj['stack']);
       {AllowWriteln-}
       {AllowWriteln-}
       Log.Log(mtFatal,Msg+': '+String(obj['message']));
       Log.Log(mtFatal,Msg+': '+String(obj['message']));
+    end else if isExt(obj,TObject) then
+    begin
+      if TObject(obj) is Exception then
+      begin
+        Exc:=Exception(TObject(obj));
+        {$ifdef NodeJS}
+        {AllowWriteln}
+        if Exc.NodeJSError<>nil then
+          writeln(Exc.NodeJSError.stack);
+        {AllowWriteln-}
+        {$endif}
+        Log.Log(mtFatal,Msg+': ('+Exc.ClassName+') '+Exc.Message);
+      end else begin
+        Log.Log(mtFatal,Msg+': ('+TObject(obj).ClassName+')');
+      end;
     end else
     end else
       Log.Log(mtFatal,Msg+': '+String(E));
       Log.Log(mtFatal,Msg+': '+String(E));
   end else begin
   end else begin