测试意外异常的最佳做法是什么?

时间:2016-09-01 01:52:38

标签: node.js error-handling

这是NodeJS代码,但它是关于最佳实践的一般编程问题。

以下代码检查HTTPS证书的文件系统。 如果存在,则创建HTTPS服务器。 如果文件不存在,则返回undefined。 如果发生了意外的异常(它从未发生过,而且我不确定它是否可能),它会抛出它。

请假设抛出块是最好的做法,为了这个问题(我认为这是一个但我不希望答案被这个问题分散注意力。)

现在,抛出异常的代码没有像我的代码覆盖工具所揭示的那样被命中。我该怎么办呢?

我的选择是......

1 - 删除代码,因为它从未被命中 - 但是如果抛出了意外的异常,catch块会掩盖它!

2 - 保留代码并告诉覆盖工具忽略它

3 - 做别的事情

请告知最佳做法。非常感谢

createHttpsServer(certDir) {

  if (!certDir) {
    return undefined;
  }

  try {
    let options = {
      key: fs.readFileSync(`${certDir}/privkey.pem`),
      cert: fs.readFileSync(`${certDir}/fullchain.pem`),
      ca: fs.readFileSync(`${certDir}/chain.pem`)
    };
    return https.createServer(options, this.app);
  } catch (err) {
    if (err.code === 'ENOENT') {
      return undefined;
    } else {
      throw err;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

必须同意罗伯特对此的评论。我建议保留代码。 "我不确定它能不能"是一个陷阱,我自己已经堕落了许多次。