計算機科学のブログ

処理を学ぶ 例外処理、入れ子

ハンズオンJavaScript (あんどうやすし(著)、オライリー・ジャパン)の3章(処理を学ぶ)、3.9(練習問題)の3-4、5の解答を求めてみる。

コード

console.log('3-4');

// Error: [終了処理1][例外処理2][例外処理3]
try {
    try {
        (() => {
            try {
                try {
                    throw Error('[例外1]');
                } catch ({ message }) {
                    throw Error(`${message}[例外処理1]`);
                } finally {
                    throw Error('[終了処理1]');
                }
            } catch ({ message }) {
                throw Error(`${message}[例外処理2]`);
            }
        })();
    } catch ({ message }) {
        throw Error(`${message}[例外処理3]`);
    }
} catch (e) {
    console.log(e);
}

console.log('3-5')
const fn = (egg) => {
    if (egg) {
        console.log('卵があった。')
        console.log('牛乳を6つ買った。')
    } else {
        console.log('卵がなかった。')
        console.log("牛乳を1つ買った。")
    }
}
fn(true);
fn(false);

入出力結果(Terminal, Zsh)

% node sample4.js
3-4
Error: [終了処理1][例外処理2][例外処理3]
    at Object.<anonymous> (/Users/.../sample4.js:20:15)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47
3-5
卵があった。
牛乳を6つ買った。
卵がなかった。
牛乳を1つ買った。
%