【wenyan-lang / 文言】Error Handling 口語解 try catchの仕方
error handling を行う方法
文言で当然乍ら、文言ではtry...catch...
と記述することはなく、何となれば、文言は漢字を用いるからであります。
そこで文言では、これを漢語で以て実装し、
姑妄行此。
嗚呼。「「滅頂」」之禍。
如事不諧。豈「「虛指」」之禍歟。
吾有一言。曰「「本無此物。奈何用之」」。書之。
豈「「文法」」之禍歟。
吾有一言。曰「「不合文法。不通之甚」」。書之。
豈「「異類」」之禍歟。
吾有一言。曰「「物各其類。豈可混同」」。書之。
豈「「滅頂」」之禍歟。
吾有一言。曰「「嗚呼哀哉。伏维尚飨」」。書之。
不知何禍歟。名之曰「奇禍」。
吾有一言。曰「「人坐家中。禍從天降」」。書之。
乃作罷。
姑妄行此。
嗚呼。「「無足輕重」」之禍。
如事不諧乃作罷。
姑妄行此。
嗚呼。「「事不關心」」之禍。曰「「事不關心。關心者亂」」
如事不諧。不知何禍歟。名之曰「禍」。夫「禍」之「「名」」。書之。乃作罷。
嗚呼哀哉。伏维尚飨
事不關心
単に
先に
簡単な用例
今目標とする機序を、
try {
throw new Error();
} catch (error) {
console.log("ERROR");
}
これを実行すると次のように表示されます。
ERROR
ERROR
と文字で通告するような
姑妄行此
嗚呼「「誤謬」」之禍
如事不諧不知何禍歟
吾有一言曰「「ERROR」」書之
乃作罷
ERROR
上の通り、句点「。」はなくとも問題ありません。
定型
要点を抜粋すれば次の通りです。
姑妄行此
嗚呼「「発出するerror名(文字列)」」之禍
如事不諧不知何禍歟
吾有一言曰「「通告文(文字列)」」書之
乃作罷
始めはこれを定型として覚えておくことと致します。
error に対する処置を定める(if else )
特定の先ほど示した例は、不明な
姑妄行此
嗚呼「「誤謬」」之禍曰「「ERROR」」
如事不諧
不知何禍歟
名之曰「Error」
夫「Error」之「「名」」書之
夫「Error」之「「文」」書之
乃作罷
誤謬
ERROR
この内、姑妄行此
がtry
、如事不諧
がcatch
、不知何禍歟
がelse
に当ります。併し乍ら、if
に当るものは未だ存在しませんので、増訂致しましょう。
姑妄行此
嗚呼「「誤謬」」之禍曰「「ERROR」」
如事不諧
豈「「誤謬」」之禍歟
名之曰「Error」
夫「Error」之「「名」」書之
夫「Error」之「「文」」書之
不知何禍歟
名之曰「不知之」
夫「不知之」之「「名」」書之
吾有一言曰「「UNKNOWN ERROR」」書之
乃作罷
豈「「誤謬」」之禍歟
がif
に当ります。
誤謬
ERROR
確認
茲で一度、文言で書いたものを
try {
let e = new Error("ERROR");
e.name = "誤謬";
throw e;
} catch (error) {
if (error.name == "誤謬") {
let Error = error;
console.log(Error.name);
console.log(Error.message);
} else {
let 不知之 = error;
console.log(不知之.name);
console.log("UNKNOWN ERROR");
}
}
二者は次の通り対応します。
文言 | |
---|---|
姑妄行此 不知何禍歟 乃作罷 |
try { } catch (error) { } |
嗚呼「「誤謬」」之禍曰「「ERROR」」 | let e = new Error("ERROR"); e.name = "誤謬"; throw e; |
豈「「誤謬」」之禍歟 | if (error.name == "誤謬") |
名之曰「Error」 夫「Error」之「「名」」書之 夫「Error」之「「文」」書之 |
let Error = error; console.log(Error.name); console.log(Error.message); |
不知何禍歟 | else |
名之曰「不知之」 夫「不知之」之「「名」」書之 吾有一言曰「「UNKNOWN ERROR」」書之 |
let 不知之 = error; console.log(不知之.name); console.log("UNKNOWN ERROR"); |
確認問題:冗を探す
以上を受けて、始めに挙げた例から使用されない変数を検出しましょう。
姑妄行此。
嗚呼。「「滅頂」」之禍。
如事不諧。豈「「虛指」」之禍歟。
吾有一言。曰「「本無此物。奈何用之」」。書之。
豈「「文法」」之禍歟。
吾有一言。曰「「不合文法。不通之甚」」。書之。
豈「「異類」」之禍歟。
吾有一言。曰「「物各其類。豈可混同」」。書之。
豈「「滅頂」」之禍歟。
吾有一言。曰「「嗚呼哀哉。伏维尚飨」」。書之。
不知何禍歟。名之曰「奇禍」。
吾有一言。曰「「人坐家中。禍從天降」」。書之。
乃作罷。
解答
名之曰「奇禍」。
の部で定められている変数奇禍
は使用されません。
error
主要の文言は、元より幾つか
漢語 | 英語 |
---|---|
文法 | SyntaxError |
逾界 | RangeError |
異類 | TypeError |
虛指 | ReferenceError |
俚言解
以降は、機序ではなく語意に着目して読み解いて参ります。
基本文法の意味
姑妄行此
・・・
如事不諧
豈「「~~」」之禍歟
・・・
不知何禍歟
・・・
乃作罷
姑妄行此
姑は姑息と言うように「しばらく」の意、妄は「みだり」の意でありますから、「姑妄行此」とは「姑く妄りに此を行う」の意味であろうと考察されます。try
は失敗し得る処理を行う際のものですから、失敗するまでは行うという意味で解釈できます。
如事不諧
如は「もし」の意、諧は諧和、諧調と言うように「かなう」、「ととのう」の意でありますから、「如事不諧」は「如し事の諧はざれば」の意味であろうと考察されます。try
での処理が失敗したことを「事不諧」と表現したのでしょう。
豈「「~~」」之禍歟
豈は疑問の副詞「あに」の意、禍は
不知何禍歟
禍は豈「「~~」」之禍歟
で定めない全ての
乃作罷
乃は「すなわち」、「ただちに」の意、罷は「やめる」の意でありますから、「乃作罷」は「乃ち罷と作す」、「乃ち罷む」の意味であろうと考察されます。try...catch...
の終端を示すための言葉であります。
error
逾界
逾は「こえる」の意ですから、「界を逾ゆ」の意味となります。
例中の語
文字列や変数名として現れる語を紹介致します。
「「滅頂」」之禍。
滅頂は「溺れる」こと。即ち滅頂の禍とは、「溺死」、「破滅」の意にして、茲では「破滅」の意味を用いているものと考察されます。
曰「「嗚呼哀哉。伏维尚飨」」。
全唐文卷二百六より祭韋府君文が出典でありましょう。嗚呼哀哉は「あゝ哀しきかな」の意。伏維は本来「伏惟」と書き、「伏して惟ふ」、「謹んで考える」の意。尚は「こいねがわくは」、饗は「うける」の意より、「尚くは(祭礼のもてなしを)饗けんことを」の意にして祭文の終辞であろうと推察されます。亡き人に思いを馳せる文章です。
曰「「人坐家中。禍從天降」」。
「人、家の中に坐りて、禍、天より降る」の意味で、中国では「人在家中坐,鍋從天上来」という言葉が流行しました。「人は思いもよらない災難を避けられない」ことの比喩であることから、「思いがけない
無足輕重
無足輕重は「取るに足らない」意の言葉です。
姑妄行此。
嗚呼。「「無足輕重」」之禍。
如事不諧乃作罷。
この機序から得られる結果は何もありません。「取るに足らない」からこそ、何も処理を行っていないのです。
曰「「事不關心。關心者亂」」
「何事も気にしない方がよい。一度気になれば心が乱れる。」という意味の諺です。
Discussion