0

私は 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 が得られます。なぜこうなった。例外処理はどのように機能しますか??

4

2 に答える 2