当前位置: 首页 > news >正文

哈尔滨网站建设网络优化云南网站建设选天软

哈尔滨网站建设网络优化,云南网站建设选天软,php做的网站有哪些,网站申请名称和域名异常分类和日志分级 第一章已经介绍过全局的异常处理了#xff0c;但之前的做法过于简单#xff0c;一股脑的捕获并返回。这一节我们将对异常进行细致的分类#xff0c;并且日志也做标准化的分级。 准备工作 一个基础的 evp-express 项目 NodeJS Error 先了解一下 Node…异常分类和日志分级 第一章已经介绍过全局的异常处理了但之前的做法过于简单一股脑的捕获并返回。这一节我们将对异常进行细致的分类并且日志也做标准化的分级。 准备工作 一个基础的 evp-express 项目 NodeJS Error 先了解一下 NodeJS 里面的异常 JavaScript 异常是由于无效操作或作为 throw 语句的目标而抛出的值。 虽然不要求这些值是 Error 的实例或从 Error 继承的类但 Node.js 或 JavaScript 运行时抛出的所有异常都将是 Error 的实例。 在 NodeJS 中所有抛出throw的异常都可以被归为通用的 Error此外还内置了更细分的 AssertionError, SystemError, SyntaxError 等。 Error new Error(message[, options])error.cause引起 error 的根本原因可以在 new 时的options中加入error.message错误的描述error.stack错误栈产生 error 的位置 异常分类 evp-express 的错误中间件已经把异常分类做好了分成两部分 excather 和 exloggerexcatcher 捕获并处理异常exlogger 则记录日志。我们先来看怎么对异常自定义分类。 自定义分类 自定义分类的方法其实很简单无非是在抛出的异常上增加用以标识分类的属性即可。我没有选择这种方式手动抛出时要略微多写几行代码error.message 是一个描述字符串我选择抛出自定义异常时传递的message是一个json字符串json里面再放置具体描述分类信息以及其它等等的信息载体。 throw new Error(JSON.stringfy(code: 400,msg: 自定义异常1,back: true ));接下来看看异常处理器如何处理自定义异常和其它异常。 excatcher excatcher做了三件事捕获异常解析异常和根据策略调取异常处理器。 解析异常首先尝试将 err.message 作为 json 字符串解析如果能解析说明是我们自定义的异常如果解析失败说明是其它的异常就当作普通的 Error 处理。处理自定义异常自定义异常的载体我总共设置了6个属性code分类码msg描述信息symbol业务码/异常码data数据back是否返回给前端具体描述和 statushttp状态码。back置非就返回通用的系统异常错误给前端back置是则根据 code分类码从异常处理策略中取出对应的处理器处理结果如果找不到对应的处理器或者 code 没传就还是返回统一的系统异常给前端。处理完异常之后把异常再传递给 exlogger 中间件去记录异常的日志。异常处理策略在处理不同的异常上使用了策略模式增强代码的可维护性。 excatcher: (err, req, res, next) {if (err) {try {const payload JSON.parse(err.message);const {code,msg,symbol,data,back,status} payload;if (back ! false) {const handler exhandleStrategy.get(code);if ( handler ) { handler(res,msg,symbol,data,status); }else { res.json(Resp.bad(System Exception)); }} else {res.json(Resp.bad(System Exception));}} catch (_) { // cannot be parsed to JSON object common errorres.json(Resp.bad(System Exception));}next(err);} else {next();} },exhandleStrategy const exhandleStrategy new Map();exhandleStrategy.set(400, (res, ...args){const [msg,symbol,data,status] args;if (status) {res.status(status).json(Resp.fail(msg, symbol??-1, data??null));} else {res.json(Resp.fail(msg, symbol??-1, data??null));} });exhandleStrategy.set(500, (res, ...args){const [msg,symbol,data,status] args;if (status) {res.status(status).json(Resp.bad(msg));} else {res.json(Resp.bad(msg));} })接下来我们看看 exlogger exlogger exlogger 进行了一个判断如果当前日志级别 10000即 DEBUG就记录完整的异常信息否则只记录异常的描述信息。 exlogger: (err,req,res,next){if (logger.level.level 10000) {logger.error(err);return;}logger.error(err.message); }logger是什么呢这是 log4js 的日志器让我们来看看utils/logger.js log4js标准化日志 我们使用 log4js.js 作为日志框架log4js.configure 配置了 log4js 的基本配置日志格式日志方式输出、文件等、日志级别等日志级别从 evp-express 的项目配置信息中读取而得。 const config require(../config).get(); const log4js require(log4js);let logger log4js.getLogger();log4js.configure({appenders: {out: {type: stdout,layout: {type: pattern,pattern: [%d{yyyy-MM-dd hh:mm:ss}] %p %m}}},categories: {default: {appenders: [out],level: config.log4js.level}} })module.exports logger;日志级别总共有 “ALL”“TRACE”, “DEBUG”, “INFO”, “WARN”, “ERROR”, “FATAL”致命, “MARK”, “OFF”关闭 这几级大小写均支持重要性逐级递增在当前设置的 level 之下的日志将不会被记录如日志级别设置为 “INFO”则 logger.all, logger.trace, logger.debug 将不会进行日志记录。 这些文字的级别对应以下数字依次为 5e-324, 5000, 10000, 20000, 30000, 40000, 50000, 9007199254740992, 1.7976931348623157e308 日志器当前的级别可由 logger.level 或者 logger.level.levelStr 获取当前级别对应的数字可由 logger.level.level 获取不过还是更建议自定义一个数组或者Map把所有的级别文字按序放入然后需要的时候根据索引来判断级别的高低。 下一节-数据库初始化
http://www.w-s-a.com/news/776311/

相关文章:

  • 淄博网站制作优化推广asp做学生信息网站
  • 海口招商建设有限公司网站淮安哪有专业做网站的公司
  • 喀什哪有做网站的国内正规seo网络推广
  • 网站设计初步规划公司网页打不开是什么原因
  • 深圳企业网站建设推广服务php做的商城网站设计论文
  • 韩雪冬网站手机网站开发 宽度
  • 奉贤专业做网站新手怎么做企业网站
  • 做网站用哪几个端口 比较好手机号网站源码
  • 手机免费代理ip网站那个旅游网站做攻略最好
  • 西安做网站找哪家公司好苏州专业网站建设开发
  • dedecms如何做网站网站设计实施方案
  • 网站建设合约品牌设计有哪些
  • 织梦企业门户网站宝塔搭建wordpress网站
  • 网站为什么没有排名了11月将现新冠感染高峰
  • 网站开发维护专员岗位职责辽阳企业网站建设
  • 做外国订单有什么网站网站设计论文提纲
  • 商城网站建设报价方案导师让做网站
  • 清远市企业网站seo联系方式动易官方网站
  • 手机上怎么做能打开的网站一级域名和二级域名跨域
  • 网站首页效果图wordpress 在线教育
  • 电商网站开发团队广西桂林商贸旅游技工学校
  • 网站模板文件怎么下载东莞常平镇邮政编码
  • 建网站需要什么wordpress误删的后果
  • wordpress无插件实现网站地图做阿里巴巴网站店铺装修费用
  • 英文互动网站建设南宁住房和城乡建设局网站
  • 威海微网站建设乐清建网站哪家强
  • 网站和app的开发成本saas系统开发教程
  • ps切片工具做网站大气简洁网站
  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设