我看到的代码如下:
try {
// code
// ...
} catch (e) {
throw(e);
}
那就是它。 catch
块中没有其他内容。
为什么我要这样做?是不是与让异常通过完全相同?
答案 0 :(得分:2)
它唯一能做的就是改变堆栈跟踪。
function hurl() {
throw 'chunder';
}
此例外似乎来自hurl
:
hurl();
此异常似乎来自(anonymous)
(或任何范围):
try {
hurl();
} catch (e) {
throw e;
}
因此,如果你想出于某种原因想要掩盖异常的起源可能是有用的(不能想到你可能想要的原因,但是你有)。除此之外,没有任何意义。
答案 1 :(得分:-1)
没有使用throw in catch块。以下代码将打印错误。
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw "too low";
if(x > 10) throw "too high";
}
catch(err) {
console.log("Input is " + err);
}
如果你把throw块放入catch块,它将不会打印如下所示的错误
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw "too low";
if(x > 10) throw "too high";
}
catch(err) {
throw err;
console.log("Input is " + err);
}