◆ JavaScript は Exception じゃなくて Error

if 文で条件をみたしたら throw してるところでメッセージが受け取れていませんでした
エラーが出てる行は表示されてるから原因のメッセージを辿れましたが コンソールに表示されないと不便です
代わりに出てるのは

Exception is not defined

コードはこういうの
if(!foo){
throw new Exception("Invalid argument!")
}

コンソールのメッセージが指してるのは throw してる行だけど なんでメッセージ違うんだろう?
このページ何か特殊なことしてるのかな?
全体のエラーメッセージを受け取って置き換えてログする?
そんな必要なさそうだし それだとエラーの行数はそっちを指してるはずだし
もしやバグ?いやでもエラーメッセージ見れないような致命的なのは残ってるとは考えにくいし……


しばらく悩んだ結果 JavaScript は Exception じゃなくて Error じゃん
と基本的なことに気づきました


他の言語では Exception と呼ばれることが多いので

throw new Exception("Invalid argument!")

これに全く違和感をもてませんでした
よく見たらエラーメッセージも 「Exception がない」とすごくそのまま言っていますが Exception がないわけがないので 何か別の原因で変なメッセージになってるんだろうと思い込んでいました


他言語も使ってるとけっこうハマる人いるんじゃないかな


JavaScript で正しく書くならこうなります
throw new Error("Invalid argument!")

実際のところ 例外といいつつエラーですからね
言語にもよりますが try/catch が遅いものが多いとかで エラーになる例外以外で throw をすることはほぼないように思います
エラーでない例外の値で null ならデフォルト値を使いますよ くらいな例外の値なら if 文にするのが普通でここで throw して catch したところでデフォルト値入れる なんてことはしないと思います

なので Error でいいと思うのですが一般的には Exception なんですよね
Error のほうがスペル的に書きやすいのですけど