まず
なんとなくtry-catchは全ての関数でしなくてはいけないものという勢いで思ってソース中に書きまくっていたけど、ちょっと調べてみた。
※そもそもtry-catch文が必要な処理なのか? 無しで済むようなコードを書くべき
とかは置いておきます。
どいうとき使ってどういうとき使わないとかあまりわからないし、追って勉強する
普通に
try{
throw new Error("エラーだよ")
}catch(e){
console.log(e)//エラーだよ
}
まあ、これは普通にこうなりますよね。
次に
var a = function(){
try{
throw new Error ("aのエラーだよ")
}catch(e){
return
}
}
var b = function(){
throw new Error ("bのエラーだよ")
}
try{
a()
b()
}catch(e){
console.log(e)//bエラーだよ
}
aのエラーはaの中でキャッチされているので平文のtry-catchでは取れません。
bのエラーはキャッチしてないので例外が取れました
ちなみに呼び出された関数が呼び出した関数の例外も取れます。
var b = function(){
c()
}
var c = function(){
throw new Error ("cのエラーだよ")
}
try{
b()
}catch(e){
console.log(e)//cエラーだよ
}
requireしても
thr.js
a = function(){
throw new Error ("requireされたaのエラーだよ")
}
module.exports = a
var thr = require("thr")
try {
thr.a()
}catch(e){
console.log(e) //requireされたaのエラーだよ
}
大丈夫!
結果
requireしようが関数が呼び出されようが、見えないだけで、そこにコードが埋め込まれていると思えばその通りな話ですね
たぶんエンジニアの諸先輩方には常識なんですが、こんなことも知らなかった自分が情けない・・・