全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

NodeJS错误处理与日志专题

专题说明

本专题聚焦Node.js错误处理机制和日志管理实践,涵盖同步异步错误捕获、Error对象结构、try-catch与uncaughtException处理、日志级别规范、结构化日志及日志轮转策略。

学习目标

  1. 理解Node.js错误处理核心原则和最佳实践
  2. 掌握同步错误try-catch和异步错误回调/Promise/async-await处理
  3. 了解Error对象结构和自定义错误类型
  4. 掌握console输出流和日志级别规范
  5. 学会使用winston等日志库实现结构化日志和日志轮转

学习内容

专题涵盖以下核心知识点:

  • 错误处理基础:核心原则、错误分类、处理策略
  • 同步错误处理:try-catch语法、Error对象、错误传递
  • 异步错误处理:回调Error-First模式、Promise.catch、async/await try-catch
  • 未捕获错误处理:uncaughtException、unhandledRejection、全局错误监控
  • 日志记录基础:console输出流、stdout/stderr区分、调试方法
  • 日志级别规范:debug/info/warn/error级别含义、级别阈值配置
  • 结构化日志:JSON格式、上下文信息、日志框架winston/pino
  • 日志轮转策略:按日期/大小轮转、压缩归档、日志清理

学习建议

  1. 先理解错误处理的基本原则,建立正确的错误处理观念
  2. 分别学习同步和异步错误处理方式,理解各自的适用场景
  3. 掌握全局错误处理机制,防止进程意外退出
  4. 学习日志级别规范,建立合理的日志策略
  5. 实践结构化日志和日志轮转,构建生产级日志系统

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

Node.js中错误处理的核心原则是什么?

A

所有错误都应该被忽略以保证程序运行

B

错误应该被捕获并妥善处理,避免进程意外终止

C

错误只应该用console.log打印,不需要其他处理

D

只有同步错误需要处理,异步错误会自动处理

2
判断题

在Node.js中,错误可以通过throw语句、回调函数的第一个参数、Promise.reject()等方式进行传播。

A

B

3
单选题

关于try-catch-finally语句块的执行顺序,以下哪项描述正确?

A

finally块只有在catch块执行后才执行

B

finally块无论是否发生异常都会执行

C

finally块只在发生异常时执行

D

finally块在try块之前执行

4
单选题

以下代码的输出结果是什么?

JavaScript
function test() {
  try {
    return 'try返回值';
  } finally {
    return 'finally返回值';
  }
}
console.log(test());
A

'try返回值'

B

'finally返回值'

C

undefined

D

抛出错误

5
填空题

try-catch-finally语句中,______块包含可能抛出异常的代码,______块用于捕获并处理异常,_______块无论是否发生异常都会执行,常用于________操作。

6
多选题

使用async/await时,以下哪些方式可以正确处理异步错误?

A

用try-catch包裹await语句

B

在async函数内使用Promise.catch()

C

调用async函数后使用.catch()方法

D

在async函数内直接throw错误

E

用try-catch包裹async函数调用但不await

7
单选题

以下哪种方式可以正确创建自定义错误类,使其拥有正确的name属性和堆栈信息?

A

class MyError {} 直接定义空类

B

class MyError extends Error { constructor(msg) { super(msg); this.name = 'MyError'; } }

C

function MyError(msg) { this.message = msg; }

D

const MyError = { message: '错误' }

8
判断题

console.log和console.info输出到stdout(标准输出),而console.error和console.warn输出到stderr(标准错误)。

A

B

9
单选题

在生产环境中,最常记录的日志级别是哪个?

A

debug

B

info

C

warn

D

error

10
多选题

在生产环境中设置日志策略时,以下哪些做法是推荐的?

A

将日志输出到文件或日志服务,而不是仅输出到console

B

日志中包含时间戳、请求ID、用户标识等上下文信息

C

设置合适的日志级别阈值,避免日志量过大

D

对敏感信息(密码、token)进行脱敏处理

E

使用debug级别记录所有请求的详细参数

11
判断题

空catch块是错误处理中的不良实践,因为它会隐藏错误信息,导致问题难以发现和调试。

A

B

12
判断题

结构化日志(JSON格式)比非结构化日志(纯文本)更便于日志系统解析、搜索和分析。

A

B

13
单选题

在Node.js应用架构中,"错误边界"的概念是指什么?

A

一种全局的错误处理机制

B

将错误隔离在特定范围内,防止影响其他模块

C

一种用于检测错误边界的工具

D

错误发生时的物理边界位置

14
单选题

生产环境中日志文件需要轮转(rotation)的主要原因是什么?

A

为了美观整齐地组织日志文件

B

防止单个日志文件过大,便于管理和分析

C

按日期分类只是为了方便查找

D

日志轮转可以提高日志写入速度

15
填空题

完善的错误处理包含四个关键步骤:首先是______错误发生,然后______错误详情到日志,接着______错误(恢复或通知),最后______给相关系统或用户。

16
判断题

async函数中抛出的错误会转换为Promise拒绝,可以通过await后try-catch或调用.catch()方法捕获。

A

B

17
填空题

设计自定义错误类时,需要继承______类,在构造函数中调用______传入消息,设置______属性为自定义名称,使用_______________________清理堆栈,可添加________________等自定义属性用于错误分类和处理。

18
填空题

全局错误处理配置:在应用启动前注册process.on('_________________')和process.on('__________________'),处理函数中先________,可选发送________,然后执行________,包括关闭______、清理________,最后调用____________退出进程。

19
判断题

生产环境不应仅依赖console输出日志,因为console日志不持久化、难以搜索、不支持结构化、无法按级别过滤。

A

B

20
多选题

关于生产环境日志记录的最佳实践,以下哪些做法正确?

A

使用结构化日志格式(如JSON)便于解析和搜索

B

日志包含请求ID便于追踪单个请求的处理过程

C

错误日志记录完整的堆栈信息

D

对敏感信息(密码、token)进行脱敏处理

E

debug级别日志在生产环境也应记录用于详细分析

← 上一个专题 NodeJS进程与线程管理专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库