【问题标题】:Prevent console closing on exception防止控制台因异常而关闭
【发布时间】:2015-07-10 04:52:37
【问题描述】:

我正在试用 Visual Studio Code(在 Windows 上)并喜欢它。

有没有办法在调试节点应用程序时防止控制台/终端在未处理的异常时自动关闭?

我知道节点退出是正确的行为,我只是希望有机会在关闭控制台窗口之前读取输出。

【问题讨论】:

    标签: node.js visual-studio-code


    【解决方案1】:

    windows 的一个很好且简洁的解决方案是创建一个 run-server.bat 使用代码编辑器打开文件并编写以下代码。 这是做什么的,运行服务器,如果服务器退出,只需暂停控制台。

    node server.js
    PAUSE
    

    【讨论】:

      【解决方案2】:

      如果您将事件处理程序附加到监视 uncaughtException 的进程对象,则在出现未处理异常的情况下将立即调用该代码:

      process.on('uncaughtException', UncaughtExceptionHandler);
      
      function UncaughtExceptionHandler(err)
      {
          console.log("Uncaught Exception Encountered!!");
          console.log("err: ", err);
          console.log("Stack trace: ", err.stack);
          setInterval(function(){}, 1000);
      }
      

      这将输出错误,堆栈跟踪,然后永远等待您手动终止正在调试的程序。这将有助于调试,但显然不是您想要的最终产品。

      当我添加代码“console.log(undefined.undefined);”在上面的 process.on 语句之后,我得到了结果输出:

      Uncaught Exception Encountered!
      err:  [TypeError: Cannot read property 'undefined' of undefined]
      Stack trace:  TypeError: Cannot read property 'undefined' of undefined
          at Object.<anonymous> (/home/username/Desktop/test.js:3:22)
          at Module._compile (module.js:449:26)
          at Object.Module._extensions..js (module.js:467:10)
          at Module.load (module.js:356:32)
          at Function.Module._load (module.js:312:12)
          at Module.runMain (module.js:492:10)
          at process.startup.processNextTick.process._tickCallback (node.js:244:9)
      

      然后它会永远“暂停”,直到我终止程序。

      【讨论】:

      • 绝招,在调试控制台窗口学会行为之前必须这样做 =)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多