我正在使用节点中的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语句的合法使用还是我滥用它?如果我不正确地接近它,那么正确的方法是什么?
答案 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;