将try catch语句与node.js URL模块一起使用以进行URL验证

时间:2017-10-10 16:24:17

标签: node.js

我正在使用节点中的URL module解析函数的URL输入。

如果给出相对路径,则抛出TypeError。我使用try...catch语句来处理此问题,如下所示:

const { URL } = require('url');

try {
  const absolute = new URL('https://static.pexels.com/photos/126407/pexels-photo-126407.jpeg');
  console.log(absolute);
} catch (e) {
  if (e instanceof TypeError) {
    console.log('absolute is a relative path');
  } else {
    throw e;
  }
}

try {
  const relative = new URL('/images/picture.jpg');
  console.log(relative);
} catch (e) {
  if (e instanceof TypeError) {
    console.log('relative is a relative path');
  } else {
    throw e;
  }
}

这是try catch语句的合法使用还是我滥用它?如果我不正确地接近它,那么正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

基本上,如果你有一段可能引发错误的代码,你应该使用try catch块...并检查它是否会抛出任何错误,你必须检查文档。

据我所知,创建一个URL会引发错误,所以你做得很好。

此外,当您捕获错误时,最好在日志流输出中记录错误...最好将信息记录在文本文件中,还要记录时间,日期以及代码的哪一部分正在抛出错误也是如此。

<强>更新

您还可以编写像URLCreator.js这样的模块,为您处理URL验证,有人会这样想:

const {URL} = require(URL);
function createURL(givenURL, callback) {
    try {
        let myURL = new URL(givenURL);
        callback(myURL);
    } catch (e) {
        if (e instanceof TypeError) {
            //error handling procedure...
        } else {
            throw e;//cause we dont know what it is or we want to only handle TypeError
        }
    }
}

module.exports = createURL;