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

node.js的错误处理

当我打开一个不存在的文件时,错误如下:

在读取文件里面写入console.log(err),在控制台中可以看到我的错误代码类型:文件不存在的错误代码 'ENOENT'。见更多错误代码---打开node.js官方API文档Error 错误 | Node.js v20 文档 (nodejs.cn),点击error错误这个模块,查看不同的错误码

故,我们可以根据不同的代码做一个错误判断:

以前面写过的获取静态资源代码为例:见http://t.csdnimg.cn/y9zIM

四种常见错误处理:

//以获取静态资源的代码为例:
// 1.导入http模块
const http = require('http');
const fs = require('fs');
// 2.创建服务对象
const server = http.createServer((request, response) => {// (3)错误3:当请求不是get请求而是一个post请求时:if(request.method !== 'GET'){response.statusCode=406;response.end('<h1>406 请求错误</h1>');return;}// 获取请求url路径let { pathname } = new URL(request.url, 'http://127.0.0.1');// 拼接文件路径let filePath = __dirname + pathname;// 注意:如果我不单单想局限于读取pages文件夹下的内容,若我想读取我的大文件夹my下的任何文件,就设置let filePath=__dirname+pathname; 注意,读取的文件名不能以中文命名。否则会报错// 读取文件 fs异步APIfs.readFile(filePath, (err, data) => {if (err) {response.setHeader('content-type', 'text/html;charset=utf-8'); //设置字符集// console.log(err);//当我在浏览器打开一个不存在的文件222.html时,会提示错误并且错误代码显示“ENOENT”。所以我们可以使用不同的错误代码进行一个错误分类判断// 利用switch分支结构进行错误的代号判断// 注意:当我不知道err.code的错误代码eg:EPERM是什么意思时,打开node.js官方API文档,点击error错误这个模块,ctrl+F去搜索对应的错误码switch (err.code) {// (1)错误1:我在浏览器打开一个不存在的文件222.htmlcase 'ENOENT':response.statusCode = 404; //设置响应状态码response.end('<h1>404 Not Found</h1>');//设置响应体// (2)错误2:我将要打开的文件在它的安全属性里修改了它的权限-不允许被读取时case 'EPERM':response.statusCode = 405; //设置响应状态码response.end('<h1>405 Forbidden</h1>');//设置响应体// (4)错误4:未知错误default:response.statusCode=407;response.end('<h1>407 服务器内部错误</h1>');//设置响应体} return;}response.end(data);})
})
// 3.监听端口,启动服务
server.listen(9000, () => {console.log('服务已启动...');
})

错误一形式:

http://www.lryc.cn/news/331456.html

相关文章:

  • shell的编写
  • css心跳动画
  • 在 Amazon Timestream 上通过时序数据机器学习进行预测分析
  • 【智能排班系统】快速消费线程池
  • C语言——内存函数
  • ideaSSM图书借阅管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目
  • 普联一面4.2面试记录
  • SQLite的架构(十一)
  • Vue2电商前台项目(一):项目前的初始化及搭建
  • 4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令
  • 【WEEK5】 【DAY5】DML语言【中文版】
  • 媒体偏见从何而来?--- 美国MRC(媒体评级委员会)为何而生?
  • Solana 线下活动回顾|多方创新实践,引领 Solana“文艺复兴”新浪潮
  • CSS3 实现文本与图片横向无限滚动动画
  • Android 性能优化之黑科技开道(一)
  • Successive Convex Approximation算法的学习笔记
  • IoT数采平台2:文档
  • Vue监听器watch的基本用法
  • MySQL UPDATE JOIN 根据一张表或多表来更新另一张表的数据
  • JS实现继承的方式ES6版
  • elementui 左侧或水平导航菜单栏与main区域联动
  • YUNBEE云贝-技术分享:PostgreSQL分区表
  • 5.2 通用代码,数组求和,拷贝数组,si配合di翻转数组
  • Oracle23免费版简易安装攻略
  • 《论文阅读》一种基于反事实推理的会话情绪检测无训练去偏框架 EMNLP 2023
  • 基于springboot+vue的健身房管理预约管理系统
  • 【编译lombok问题】已解决:编译突然找不到符号问题-get/set找不到符号
  • 第四篇:3.3 无效流量(Invalid traffic) - IAB/MRC及《增强现实广告效果测量指南1.0》
  • PyTorch示例——使用Transformer写古诗
  • vue 视频添加水印