LoginSignup
2
4

More than 5 years have passed since last update.

try{} catch(){} をおさらいした

Posted at

まず

なんとなく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しようが関数が呼び出されようが、見えないだけで、そこにコードが埋め込まれていると思えばその通りな話ですね
たぶんエンジニアの諸先輩方には常識なんですが、こんなことも知らなかった自分が情けない・・・

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4