全部学科
Python全栈
python
NodeJS全栈
nodejs

NodeJS错误处理与日志专题测试

20 题 45 分钟 难度:★★

考察知识点

  1. 错误处理基础 - 错误捕获原则、Error对象使用、错误类型识别
  2. try/catch/finally - 同步错误捕获、finally执行顺序、return覆盖问题
  3. 异步错误处理 - 回调错误处理、Promise.catch、async/await异常捕获
  4. 全局未捕获异常 - uncaughtException、unhandledRejection、进程退出处理
  5. 日志记录基础 - console输出流、stdout/stderr区别、日志输出位置
  6. 日志级别管理 - debug/info/warn/error级别、级别过滤机制、生产环境策略
💡 参考答案在文末
判断题
1

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

A

B

2

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

A

B

3

可以使用instanceof运算符来判断错误对象的类型,例如err instanceof TypeError。

A

B

单选题
4

Node.js回调风格API中,错误参数的位置和约定是什么?

A

错误作为回调函数的最后一个参数

B

错误作为回调函数的第一个参数

C

错误作为回调函数的第二个参数

D

不传递错误,而是直接抛出异常

5

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

A

debug

B

info

C

warn

D

error

6

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

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

'try返回值'

B

'finally返回值'

C

undefined

D

抛出错误

7

以下哪个process事件用于捕获未处理的Promise拒绝?

A

uncaughtException

B

unhandledRejection

C

rejectionHandled

D

exceptionCaught

8

Promise链中未被catch捕获的错误会如何处理?

A

错误会被自动忽略,程序继续运行

B

错误会沿着Promise链向下传递直到被catch捕获

C

错误会向上传递给调用者

D

错误会被.then的第二个参数自动捕获

9

以下哪个console方法可以打印对象的完整结构,包括嵌套属性?

A

console.log()

B

console.dir()

C

console.print()

D

console.show()

10

以下哪种方式可以正确创建自定义错误类,使其拥有正确的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: '错误' }

11

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

A

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

B

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

C

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

D

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

12

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

A

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

B

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

C

finally块只在发生异常时执行

D

finally块在try块之前执行

13

Node.js中domain模块的主要作用是什么?

A

用于域名解析和网络请求

B

用于创建错误隔离区域,批量处理错误

C

用于创建子进程进行错误处理

D

用于设置全局错误日志级别

多选题
14

以下哪些是Node.js/JavaScript内置的错误类型?

A

TypeError

B

RangeError

C

NetworkError

D

SyntaxError

E

ReferenceError

15

关于全局未捕获异常处理的最佳实践,以下哪些说法正确?

A

uncaughtException处理后进程应尽快退出

B

全局异常处理仅用于日志记录,不应恢复进程运行

C

可以完全依赖全局异常处理,无需代码内错误处理

D

unhandledRejection事件必须在应用启动时注册

E

在uncaughtException中继续运行可能导致内存泄漏或数据损坏

16

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

A

用try-catch包裹await语句

B

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

C

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

D

在async函数内直接throw错误

E

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

17

关于try-catch的正确使用,以下哪些做法是推荐的?

A

只包裹可能抛出异常的代码,不要包裹整段代码

B

捕获特定错误类型,而不是笼统的Error

C

在catch块中记录错误信息并进行适当处理

D

用try-catch捕获异步回调中的错误

E

空catch块忽略所有错误以保持代码简洁

填空题
18

Error对象的三个标准属性分别是:____________存储错误描述信息,____________存储错误类型名称,____________存储调用堆栈跟踪信息。系统错误还可能包含code属性存储系统错误代码。

19

在Node.js中,使用process.on('____________')捕获未处理的同步异常,使用process.on('____________')捕获未处理的Promise拒绝。这两个事件应在应用____________注册,且主要用于日志记录,处理后建议调用process.exit退出进程。

20

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

参考答案
1.正确 2.正确 3.正确 4.B 5.D 6.B 7.B 8.B 9.B 10.B 11.B 12.B 13.B 14.A;B;D;E 15.A;B;D;E 16.A;B;C;D 17.A;B;C 18.message;name;stack 19.uncaughtException;unhandledRejection;启动时 20.try;catch;finally
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 NodeJS进程与线程管理专题测试
下一套试卷 → NodeJS高级技能认证
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码