使用承诺 - 在失败处理程序中记录堆栈跟踪

2024-04-17

我对 Nodejs 相当陌生,所以我将更详细地解释我想要做什么。

我有一个网络服务器。如果请求失败,我想记录该异常的堆栈跟踪,但提供错误页面而不是使服务器崩溃。

例如,处理请求的函数:

var Q = require('q');

var requestHandler = function () {
    // Here I get the data etc. that was requested. As this is not important, just a dummy here
    Q.resolve()
        // Now I answer the request
        .then(function (data) {
            // Dummy Code representing the sending of a response
            console.log('sending response …');
            console.log('oh no! an exception');
            // Now an Exception occurs
            throw new Error('You did something wrong!');
        })
        // If there was any error, show the error page instead
        .fail(function (err) {
            // Dummy Code representing the sending of the error page
            console.log('sending error page');
            // Additionally I want to write the error into a log file
            console.error('You had an error: ', err);
        })
        // If there was an error in the .fail-handler, I deserve the server to crash
        .done();
};

// A request comes in, I want to call my handler
requestHandler();

控制台的输出:

sending response …
oh no! an exception
sending error page
You had an error:  [Error: You did something wrong!]

我看不到访问堆栈跟踪的方法。但是,当我在 .fail-handler 中抛出异常(或者只是省略完整的 .fail-handler)时,我会在控制台上看到堆栈跟踪(但我必须重新启动服务器)。

所以我想我的问题是:

如何访问承诺失败处理程序中的堆栈跟踪?

EDIT:当然,欢迎任何关于如何改进解释的建议。如果我没有说清楚,请告诉我。


记录错误对象不会打印错误的堆栈跟踪。 你需要具体询问:

console.error('You had an error: ', err.stack);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用承诺 - 在失败处理程序中记录堆栈跟踪 的相关文章

随机推荐

  • 如何查找列表中句子列表中每个单词的引理和频率计数?

    我想使用 WordNet Lemmatizer 找出引理 并且还需要计算每个词频 我收到以下错误 轨迹如下 类型错误 不可散列的类型 列表 注 语料 库可在nltk包装本身 到目前为止我已经尝试过如下 import nltk re impo
  • 如何在 Komodo IDE 中设置断点?

    我已经安装了科莫多集成开发环境 https www activestate com products komodo ide 我想知道在哪里 如何设置断点 以便顶行的第 9 个符号 gt 明白了吗 EDIT 单击代码左侧装订线中的行号
  • Scala 中的函数式反应式编程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • Ant:将compilerarg传递给javac

    我有可以编译的 ant 脚本
  • 如何让 gdb 保存命令历史记录?

    我该如何设置gdb这样它就可以保存命令历史记录 当开始新的gdb会话 我想使用向上箭头键来访问之前会话的命令 简短回答 mkdir p config gdb echo set history save on gt gt config gdb
  • 如何使用 UIPath 中的“关闭选项卡”活动关闭子选项卡

    UiPath 是closing the 主窗口而不是子窗口 我在中定义了一个浏览器变量attach browser活动并将该浏览器变量传递给Close tab活动 Chrome 主窗口仍处于关闭状态 另附上项目 xaml 文件https d
  • iOS11 AppIcon无法更改

    Xcode 9 测试版 6 iOS 11 测试版 10 我想要使 用自定义应用程序图标打包应用程序 因此我尝试替换 DerivedData Users XXX Library Developer Xcode DerivedData proj
  • Pyparsing 分隔列表仅返回第一个元素

    这是我的代码 l 1 3E 2 2 5E 1 parser Word alphanums grammar delimitedList parser delim t print grammar parseString l 它返回 1 3E 2
  • iOS:从 url 加载图像

    我需要从 url 加载图像并将其设置在 UIImageView 中 问题是我不知道图像的确切大小 那么如何才能正确显示图像呢 只需使用 UIImage 的 size 属性即可 例如 NSURL url NSURL URLWithString
  • 将带有ajax请求的数组发送到php

    我像这样创建了数组 9 ques 5 19 ques 4 现在我想将它从 JS 发送到 PHP 但我没有得到正确的结果 我的JS代码是 button click function e e preventDefault ajax type p
  • nameof 和 typeof 的区别

    如果我错了请纠正我 但是做类似的事情 var typeOfName typeof Foo Name and var nameOfName nameof Foo 应该给你完全相同的输出 根据该消息来源 可以理解的原因之一是 https msd
  • 使用 RPATH 但不使用 RUNPATH?

    这一页 https web archive org web 20120418232524 http labs qt nokia com 2011 10 28 rpath and runpath 说关于图书馆检索的顺序ld so Unless
  • 覆盖特定模型的 Django 管理 URL?

    首先是一些背景 我有一个Event模型具有各种event types 我想将这些事件类型之一 电影 分解到它自己的管理中 我已经具备了基本功能 继承自的代理模型Event named Film 该代理模型的自定义管理器 仅将其过滤为 电影
  • 从 GoDaddy 托管的 ASP.NET MVC 应用程序发送邮件消息时出现问题

    我在 GoDaddy 托管的 MVC Web 应用程序上有一个表单 用户可以填写该表单并发送给我们的办公室 我目前正在使用 Gmail 帐户和 GoDaddy 电子邮件帐户 链接到我的托管空间 对其进行测试 使用 Gmail 代码后 电子邮
  • 如何使用自动生成的列隐藏 ASP.NET GridView 中的列?

    即使 SqlDataSource1 DataBind GridView1 Columns Count 也始终为零 但网格没问题 I can do for int i 0 i lt GridView1 HeaderRow Cells Coun
  • Android CursorLoader 带有选择和selectionArgs[]

    我在用Loader for RecyclerView Adapter列出项目 我想列出数据库表中的特定项目 所以我做了 public Loader
  • 从 csv 文件创建代理时使用 to-reports

    我的问题有点长 如果您能阅读全部内容 我真的很感激 并且我将非常感谢您的任何建议 我有与 2 位海龟消费者相关的数据 他们对笔记本电脑的功能进行了评级 笔记本电脑有两种特征 屏幕尺寸和电池寿命 每个都有一些级别 例如电池续航时间有5小时 1
  • 从 firebase 渲染 FlatList 中的数据

    我正在使用 React Native 0 49 我从 firebase 中获取了数据 用户列表users 这个列表中的每一项都是这样设置的firebase database ref users userId set userInfo 用户
  • bigquery 允许的表数量是否有限制

    BigQuery 中可以拥有的表数量有限制吗 我正在尝试创建多个小表以减少查询成本 谢谢 表的数量没有限制 由于查询字符串的长度有 10k 的限制 因此您可能会在查询所有这些内容时遇到问题
  • 使用承诺 - 在失败处理程序中记录堆栈跟踪

    我对 Nodejs 相当陌生 所以我将更详细地解释我想要做什么 我有一个网络服务器 如果请求失败 我想记录该异常的堆栈跟踪 但提供错误页面而不是使服务器崩溃 例如 处理请求的函数 var Q require q var requestHan