JavaScript catchしたエラーで処理を分岐する

try catch で例外が発生する処理を囲んだ場合に、そのブロックで複数の例外が発生するときにそれぞれで異なる処理をしたい場合があります。

以下のように instance of を使って if 文で分岐するのがメジャーなやり方です。

function HogeException(message){
	this.name = 'hoge';
  this.message = message;
}

try{
	doSomething(); // HogException の他にも例外が throw される可能性がある
}catch(e){
	if(e instanceof HogeException){
  	console.log('hoge'); // HogeException が発生した場合の処理
  }else{
  	console.log('other error'); // それ以外の処理
  }
}