首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mongoose /node如何处理异常

mongoose /node如何处理异常
EN

Stack Overflow用户
提问于 2014-07-10 23:14:04
回答 1查看 1.1K关注 0票数 0

我在保存模型的过程中有一个验证。验证与空值背道而驰,并试图拆分它,但它出错了,out..it抛出了节点本身。如果有一个适当的错误,我传递一个回调来保存它不是called...but (当我修剪并执行检查并发送false时,它会调用回调。)这应该如何正常处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\WN\models\user.coffee:18
                        # validator: wed.checkCity
                      ^
TypeError: Cannot call method 'split' of undefined
    at model.mongoose.Schema.aboutme.validate (C:\WN\models\user.coffee:18:23)
    at C:\WN\node_modules\mongoose\lib\schematype.js:627:28
    at Array.forEach (native)
    at SchemaString.SchemaType.doValidate (C:\WN\node_modules\mongoose\lib\schematype.js:614:19)
    at C:\WN\node_modules\mongoose\lib\document.js:956:9
    at process._tickCallback (node.js:415:13)
EN

回答 1

Stack Overflow用户

发布于 2014-07-11 03:26:20

下面的代码是我用来捕获Node.js抛出的异常的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Error configuration
function bootErrorHandler(app) {

  // When no more middleware require execution, aka
  // our router is finished and did not respond, we
  // can assume that it is "not found". Instead of
  // letting Connect deal with this, we define our
  // custom middleware here to simply pass a NotFound
  // exception

  app.use(function(req, res, next){
    next(new NotFound(req.url));
  })

  // Provide our app with the notion of NotFound exceptions

  function NotFound(path){
    this.name = 'NotFound'
    if (path) {
      Error.call(this, 'Cannot find ' + path)
      this.path = path
    } else {
      Error.call(this, 'Not Found')
    }
    Error.captureStackTrace(this, arguments.callee)
  }

  /**
   * Inherit from `Error.prototype`.
   */

  NotFound.prototype.__proto__ = Error.prototype;

  // We can call app.error() several times as shown below.
  // Here we check for an instanceof NotFound and show the
  // 404 page, or we pass on to the next error handler.

  // These handlers could potentially be defined within
  // configure() blocks to provide introspection when
  // in the development environment.

  //var logFile = fs.createWriteStream(__dirname + '/log/error', {'flags': 'a'});

  var mongooseError = function(err, res){
      var messages = {
        'required': "%s is required",
        'min': "%s below minimum",
        'max': "%s above maximum",
        'enum': "%s not an allowed value"
      };
      var errors = [];
      _.each(Object.keys(err.errors), function(field){
        var errObj = err.errors[field];
        if (!messages.hasOwnProperty(errObj.type))
            errors.push(errObj.type);
        else{
            errors.push(require('util').format(messages[errObj.type], errObj.path));
        }
      });
        res.render('info/500', {
            status: 500,
            error: errors,
            showStack: '',
            title: 'Oops! Something went wrong',
            layout: 'layouts/500'
        });
  }

  app.error(function(err, req, res, next){
          //logFile.write('\r\n===' + new Date() + '===\r\n');
          //logFile.write(err.stack);

          if (err instanceof NotFound) {
                  logger.error(err.stack);
                  res.render('info/404', {
                          status: 404,
                          error: err,
                          showStack: app.settings.showStackError,
                          title: 'Oops! The page you requested desn\'t exist'
                  })
          }
          else {
                  logger.error(err.stack);
                  if (err.name === 'ValidationError')
                     mongooseError(err, res);
                  else
                    res.render('info/500', {
                        status: 500,
                        error: err,
                        showStack: app.settings.showStackError,
                        title: 'Oops! Something went wrong!',
                        layout: 'layouts/500'
                    });
         }
  })

}

您还可以在您的节点应用程序文件的开头添加以下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
process.on('uncaughtException', function (err) {
  if ('stack' in err) {
    console.log(err.stack);
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24687802

复制
相关文章
如何处理 Node.js 中出现的未捕获异常?
运行以上程序,在右侧第二个窗口中执行了 /error 路由,因为没有定义 a 这个对象,则会引发错误。
五月君
2020/07/02
2.9K0
用 Mongoose 插件记录Node.js API日志[每日前端夜话0xBD]
现在已经有了 npm 的日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行的ORM Mongoose 讨论 Node.js Express 程序中的 API 日志记录。
疯狂的技术宅
2019/09/12
2.8K0
用 Mongoose 插件记录Node.js API日志[每日前端夜话0xBD]
如何优雅处理前端异常?(史上最全前端异常处理方案)
前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。
前端迷
2019/12/05
3.8K0
如何优雅处理前端异常?(史上最全前端异常处理方案)
JavaScript异常如何处理
在前端的开发工作当中,我们对于异常的处理可能关注的不是太多,因为js有基本的异常处理能力,很多错误会直接抛出来,打开控制台就能看到。但是如果因为异常导致网站卡死,甚至崩溃无法继续进行下去,对于用户的体验是相当差的,我们应该及时的捕获这些异常,对用户进行一些简要的温馨提示,并将异常进行及时的上报,以便于快速解决。
OECOM
2020/07/02
1.6K0
JavaScript异常如何处理
Node异常笔记
解决方案: 将设置的prefix路径(如 F:\nodejs\node_global)添加到环境变量Path即可。
WindCoder
2018/09/19
3.5K0
如何优雅处理前端异常?
前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。
Nealyang
2019/09/29
1.7K0
如何优雅处理前端异常?
如何优雅处理前端异常?
对于 JS 而言,我们面对的仅仅只是异常,异常的出现不会直接导致 JS 引擎崩溃,最多只会使当前执行的任务终止。
grain先森
2019/03/29
2.1K0
如何优雅处理前端异常?
异常如何优雅的处理?
在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。
小冷coding
2023/05/24
4220
异常如何优雅的处理?
什么是Java 异常?如何处理异常?
在 Java 中,异常(Exception)指的是一种程序运行过程中出现的意外情况,这些意外情况可能是由于程序的逻辑错误、输入错误或系统错误等引起的。Java 通过提供异常机制来处理这些意外情况,从而使程序更加健壮和可靠。
网络技术联盟站
2023/05/03
7880
什么是Java 异常?如何处理异常?
Node 脚本遭遇异常时如何安全退出
一个 Node 相关的项目中,总是少不了跑脚本。跑一个脚本拉取配置、处理一些数据以及定时任务更是家常便饭。
山月
2020/08/28
1.8K0
【Java异常】什么是异常,Java中如何处理异常?
注意:当三个块中都出现了return语句,首先记录try{}中return的结果,出现异常时,还会记录catch{}中return的结果,最后记录finallu{}块中的结果,最终返回的是finallu{}块中的结果
.29.
2023/10/23
2040
【Java异常】什么是异常,Java中如何处理异常?
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
在之前的博客中介绍了文件操作 , 如果以只读的形式打开不存在的文件 , 就会导致异常的出现 ;
韩曙亮
2023/10/11
2280
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
Java | 如何做好异常处理?
这周身体不适请了两天病假,只上了三天班。本来不打算发文,但写文章这件事我很想做好。咬咬牙还是坚持下去。废话少说,今天给你们带来的是如何做好 Java 中的异常处理。
JavaFish
2019/10/17
1.3K0
Java | 如何做好异常处理?
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
在快速迭代和持续交付的今天,软件的健壮性、可靠性和用户体验已经成为区别成功与否的关键因素。特别是在Spring框架中,由于其广泛的应用和丰富的功能,如何优雅地处理异常就显得尤为重要。本文旨在探讨在Spring中如何更加高效、准确和优雅地处理异常,帮助开发者更好地构建和维护Spring应用。
kfaino
2023/09/26
3.9K0
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常?
在开发过程中,异常处理是必不可少的一部分。SpringBoot 是一款非常流行的微服务框架,它提供了丰富的机制来处理异常。本文将介绍 SpringBoot 中如何优雅地处理异常,包括异常处理机制、全局异常处理器、自定义异常等。
网络技术联盟站
2023/06/05
2.6K0
Dubbo如何处理业务异常
https://blog.csdn.net/m0_57077948/article/details/117524555?utm_medium=distribute.pc_relevant.none-t
用户9131103
2023/07/17
6140
Dubbo如何处理业务异常
如何优雅处理前端的异常?
前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。
桃翁
2019/05/31
1.8K0
详解JVM如何处理异常
无论你是使用何种编程语言,在日常的开发过程中,都会不可避免的要处理异常。今天本文将尝试讲解一些JVM如何处理异常问题,希望能够讲清楚这个内部的机制,如果对大家有所启发和帮助,则甚好。
技术小黑屋
2018/11/08
1.3K0
如何使用SpringMvc处理Rest异常
若你的项目中已经在使用spring,然后你又需要提供rest接口,那么springmvc是一个不错的选择。
Java知音
2018/09/28
1.3K0
测试如何处理Java异常
本文主要内容:处理Java异常的几种情况下的错误示范和正确示范。用Java处理异常不是一件容易的事,幸好对于测试来讲,没有那么多悬而不决的场景,只要开发之前进行简单的异常约束基本能解决所有问题。
FunTester
2020/05/25
6420

相似问题

如何使用node、mongoose处理复选框

113

RestFul Api Node.js & Mongoose:处理错误

47

处理node.js异常

32

Node.js Express.js MonGoose处理数据

120

如何在Node.js应用中处理mongoose中的错误

00
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文