私は JavaScript を学習するのが初めてで、例外処理を学習しているときに行き詰まりました。例外が発生するたびに、「throw」キーワードを使用してスローされ、同様に「catch」ブロックを使用してキャッチされることを理解しました。
しかし、私が理解できないのは、単純な例外処理手法を示す小さくて単純なコードがあり、そのコードでは、catch ブロックの場所を変更するたびに、異なる出力が得られるということです。以下は、単純なコードと、catch ブロックを配置する場所に応じたさまざまな o/ps です。
function lastElement(array) {
if (array.length > 0)
return array[array.length - 1];
else
throw "Can not take the last element of an empty array.";
}
function lastElementPlusTen(array) {
return lastElement(array) + 10;
}
try {
print(lastElementPlusTen([]));
}
catch (error) {
print("Something went wrong: ", error);
}
ここで得られる o/p は期待どおりです。
Something went wrong: Can not take the last element of an empty array.
関数 lastElementPlusTen の周りに try/catch ブロックを追加すると、次のようになります。
function lastElement(array) {
if (array.length > 0)
return array[array.length - 1];
else
throw "Can not take the last element of an empty array.";
}
try {
function lastElementPlusTen(array) {
return lastElement(array) + 10;
}
}
catch (error) {
print("Something went wrong: ", error);
}
print(lastElementPlusTen([]));
ここで取得したo/pは次のとおりです。
Exception: "Can not take the last element of an empty array."
catch ブロックからの「問題が発生しました」は出力されません。
これはなぜですか??同様に、さまざまなコードの周りに try/catch ブロックを配置すると (たとえば、最初の function 、 lastElementPlusTen 関数の本体など)、さまざまな o/p が得られます。なぜこうなった。例外処理はどのように機能しますか??