codecamp

简介

NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管。但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学。如果你实在没有耐心,那就直接绕过长篇大论跳到“总结”部分吧。

原文

这篇文章会回答NodeJS初学者的若干问题:

  • 我写的函数里什么时候该抛出异常,什么时候该传给callback, 什么时候触发EventEmitter等等。
  • 我的函数对参数该做出怎样的假设?我应该检查更加具体的约束么?例如参数是否非空,是否大于零,是不是看起来像个IP地址,等等等。
  • 我该如何处理那些不符合预期的参数?我是应该抛出一个异常,还是把错误传递给一个callback。
  • 我该怎么在程序里区分不同的异常(比如“请求错误”和“服务不可用”)?
  • 我怎么才能提供足够的信息让调用者知晓错误细节。
  • 我该怎么处理未预料的出错?我是应该用 try/catch ,domains 还是其它什么方式呢?

这篇文章可以划分成互相为基础的几个部分:

  • 背景:希望你所具备的知识。
  • 操作失败和程序员的失误:介绍两种基本的异常。
  • 编写新函数的实践:关于怎么让函数产生有用报错的基本原则。
  • 编写新函数的具体推荐:编写能产生有用报错的、健壮的函数需要的一个检查列表
  • 例子:以connect函数为例的文档和序言。
  • 总结:全文至此的观点总结。
  • 附录:Error对象属性约定:用标准方式提供一个属性列表,以提供更多信息。
背景
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }