0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超基礎】TypeScript例外処理まとめ

Posted at

前提

この記事は、初学者の私が、サバイバルTypeScriptで学んだこと+調べたことをまとめたものになります。

従って、経験則に基づいた発言ではないため、一部慣習とは違っていたり、認知にずれがあったりする可能性がありますので、ぜひコメントで指摘していただけると幸いです。

例外処理とは?

  • コード実行時に例外、つまり「エラー」が発生した時の処理
  • 基本的にJSに組み込まれたErrorオブジェクトが使われる
  • throwで投げ、try-catchで捉える

throw

  • エラーを投げる構文
  • JS,TSではError型以外のあらゆる型の値を投げることができる(非推奨)
throw
//コンストラクタにメッセージを渡したエラーオブジェクトを新たに作成し、throwする
throw new Error("エラーが発生しました");

//プリミティブ型もthrowできる(非推奨)
throw "エラーだよ"
throw 1

try-catch

  • エラーが発生し得る処理をtry内に書き、catchで捉える
  • あらゆる型をthrowできるため、例外はany型として受け取る
  • Error型のサブクラスを参照し、エラーハンドリングを行うことができる
  • JAVAと違い、一つのtryに一つのcatch

TypeScript5.0以降、ts-configuseUnknownInCatchVariablesを設定することで、より型安全なunknown型でcatchできる。

try-catch
try{
    throw new Error("エラーが発生しました");
}catch(e){ //eはany型
    console.log(
}

finally

  • 例外の有無に関係なく実行される
  • try-catchの後に実行される
try-catch
try{
    throw new Error("エラーが発生しました");
}catch(e){ 
    console.log(
}finally{
    console.log("処理が終了しました")
}

throw、try-catchは非推奨?

エラーが型のチェックをすり抜けて返ってきたり(import先でtry-catchを使うべきか否か配慮する必要がある)、エラーの場所を特定しにくかったりするため、非推奨とする声もある

これらを防ぐために新たにResult型作成し、この値をthrowではなくreturnで返すと良いらしい。

Result型は正常な値とError型の両方に対応し、エラーハンドリングもできる

まとめ

以上になります。例外処理への解像度が少し高くなりました!

当方初学者なため、認知のずれや、モダンな開発現場ではもう使わない表現などがありましたらコメントで指摘していただけると幸いです。😸

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?