在JavaScript中重新抛出异常有什么意义?

时间:2018-03-16 14:02:52

标签: javascript exception

我看到的代码如下:

try {
  // code
  // ...
} catch (e) {
  throw(e);
}

那就是它。 catch块中没有其他内容。

为什么我要这样做?是不是与让异常通过完全相同?

2 个答案:

答案 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);
    }