相关疑难解决方法(0)

是否无法使用JSON.stringify对错误进行字符串化?

再现问题

尝试使用Web套接字传递错误消息时遇到问题.我可以复制我面临的问题,JSON.stringify以迎合更广泛的受众:

// node v0.10.15
> var error = new Error('simple error message');
    undefined

> error
    [Error: simple error message]

> Object.getOwnPropertyNames(error);
    [ 'stack', 'arguments', 'type', 'message' ]

> JSON.stringify(error);
    '{}'
Run Code Online (Sandbox Code Playgroud)

问题是我最终得到一个空对象.

我试过的

浏览器

我首先尝试离开node.js并在各种浏览器中运行它.Chrome版本28给了我相同的结果,有趣的是,Firefox至少做了一次尝试,但遗漏了消息:

>>> JSON.stringify(error); // Firebug, Firefox 23
{"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"}
Run Code Online (Sandbox Code Playgroud)

替换功能

然后我查看了Error.prototype.它表明原型包含诸如toStringtoSource之类的方法.知道函数不能被字符串化,我在调用JSON.stringify时包含了一个replacer函数来删除所有函数,但后来意识到它也有一些奇怪的行为:

var error = new Error('simple error message');
JSON.stringify(error, function(key, value) {
    console.log(key === ''); // true (?)
    console.log(value === error); // true …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling json node.js

289
推荐指数
12
解决办法
8万
查看次数

为什么我的JS承诺会将错误对象捕获为空?

前言:

  • 使用Mongoose
  • 使用Bluebird并替换Mongoose内部的mpromise
  • req.helpers.consoleMessage下面看到的函数是一个函数,其中包含一些简单的逻辑,根据应用程序配置中打开的调试的存在以及对象的非null /未定义状态确定何时显示和不显示某个级别的详细信息显示.整个消息使用字符串进行字符串化JSON并返回以显示在控制台上.

码:

以下是显示这些症状的一些代码示例.

这是我正在使用的API中delete:team :comment单元的路由.我故意var response = user.comments;在引用一个user对象时给它留下了一个错误,实际上它应该team由调用函数返回并传递给Promise .then().这应该导致引用错误,因为未定义用户.

    var console = clim("(DELETE /api/v1/team/:team/comments/:comment):", logger);

    // create a filters request for mongoose
    var query = {};

    // determine if the :team param is a username or an object id
    req.helpers.validateObjectId(req.db, req.params.team) ? query._id = req.params.team : query.name = req.params.team;

    if(req.helpers.validateObjectId(req.db, req.params.comment)) {

        // looks good; create an update object
        var update = …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling try-catch node.js promise

21
推荐指数
3
解决办法
6338
查看次数

标签 统计

error-handling ×2

javascript ×2

node.js ×2

json ×1

promise ×1

try-catch ×1