• node.js的错误处理


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

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

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

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

    四种常见错误处理:

    1. //以获取静态资源的代码为例:
    2. // 1.导入http模块
    3. const http = require('http');
    4. const fs = require('fs');
    5. // 2.创建服务对象
    6. const server = http.createServer((request, response) => {
    7. // (3)错误3:当请求不是get请求而是一个post请求时:
    8. if(request.method !== 'GET'){
    9. response.statusCode=406;
    10. response.end('

      406 请求错误

      '
      );
    11. return;
    12. }
    13. // 获取请求url路径
    14. let { pathname } = new URL(request.url, 'http://127.0.0.1');
    15. // 拼接文件路径
    16. let filePath = __dirname + pathname;
    17. // 注意:如果我不单单想局限于读取pages文件夹下的内容,若我想读取我的大文件夹my下的任何文件,就设置let filePath=__dirname+pathname; 注意,读取的文件名不能以中文命名。否则会报错
    18. // 读取文件 fs异步API
    19. fs.readFile(filePath, (err, data) => {
    20. if (err) {
    21. response.setHeader('content-type', 'text/html;charset=utf-8'); //设置字符集
    22. // console.log(err);//当我在浏览器打开一个不存在的文件222.html时,会提示错误并且错误代码显示“ENOENT”。所以我们可以使用不同的错误代码进行一个错误分类判断
    23. // 利用switch分支结构进行错误的代号判断
    24. // 注意:当我不知道err.code的错误代码eg:EPERM是什么意思时,打开node.js官方API文档,点击error错误这个模块,ctrl+F去搜索对应的错误码
    25. switch (err.code) {
    26. // (1)错误1:我在浏览器打开一个不存在的文件222.html
    27. case 'ENOENT':
    28. response.statusCode = 404; //设置响应状态码
    29. response.end('

      404 Not Found

      '
      );//设置响应体
    30. // (2)错误2:我将要打开的文件在它的安全属性里修改了它的权限-不允许被读取时
    31. case 'EPERM':
    32. response.statusCode = 405; //设置响应状态码
    33. response.end('

      405 Forbidden

      '
      );//设置响应体
    34. // (4)错误4:未知错误
    35. default:
    36. response.statusCode=407;
    37. response.end('

      407 服务器内部错误

      '
      );//设置响应体
    38. }
    39. return;
    40. }
    41. response.end(data);
    42. })
    43. })
    44. // 3.监听端口,启动服务
    45. server.listen(9000, () => {
    46. console.log('服务已启动...');
    47. })

    错误一形式:

  • 相关阅读:
    VTK 标注类Widget 文字标注 vtkCaptionWidget
    基于libjpeg-turbo库的jpeg4py安装与使用记录
    Spring01
    MATLAB实战应用-【数据处理篇】数据清洗(从方法论到实战应用)
    UnoCss(原子化css引擎) 让你的开发更轻松愉快
    界面控件DevExtreme DateRangeBox组件发布,支持日期范围选择!
    【室内设计作品】关于崂山酒店,我有一个新设计
    【Q1—45min】
    每日提醒按时完成各项任务的手机app有什么?
    java毕业设计小说网站mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/2301_76669854/article/details/137204413