ながれです。
今回は、様々な言語に存在する「try-catch」文の書き方について。
プログラミング経験のある方は、一度は使われていると思います。
エラーハンドリングの一種ですね。
try-catch文を使用することにより、例外発生時にソフトウェアが死ぬことを防げる+エラー要因を特定できます。
そもそもtry-catch文とは?
先ほどもお話しましたが、try-catch文とはエラーハンドリングを指します。
Java C# JavaScriptなど複数言語で使用できます。
メソッドによっては、回避できない例外が発生する可能性があります。
各言語の公式サイトにも、「このメソッドは例外が発生する可能性あるよ」と忠告があります。
こればかりは、開発者が簡単に回避できるものではありません。
なので開発者は例外が発生することを承知の上で、復帰手段や解析用ログを残す必要があるわけです。
そういうときに役立つのが、try-catch文です。
try内の処理で例外が発生した場合に、catch内でエラー要因を捕捉できます。

上記では、JavaでThread.sleep中にinterruptメソッドによる割り込みが入った場合に、catchで例外を捕捉します。
メソッドの例外によっては、例外発生時ソフトウェアをキルしてしまう場合もあります。
try-catch文内で処理を行うことで、ソフトウェアがキルされる心配も無くなります。

try-catch文の使い方
try-catch文の概要がわかったところで、使い方の話です。
「え、別にtry-catchで囲えば良いんでしょ?」
もちろんその通りです。
ですが、何でもかんでもtry-catchで囲えば良いってもんじゃありません。
例外が発生する可能性のない処理は、try-catchで囲わない。
当たり前のようですが、try-catch内になんでもかんでも処理を入れている人、結構います。
先ほどお話しましたが、try-catch文は例外の発生要因特定とソフトがキルされるのを防ぐ機能があります。
そのため、「一応入れておけば、安全でしょ」と思ってtry-catch内に例外が発生する可能性のない処理を入れているのです。

これでは、例外発生時にどのメソッドで発生した例外なのかが、わかりにくいですね。
またソースコード上、catch文の引数に「Exception」としか記載できない(例外の種類を絞れない)ので、try内でどんな例外が発生する可能性があるのかが、わかりにくいです。
ではどうしたら良いか?
・例外が発生する可能性のない処理は、try-catchで囲わない
・例外が発生するかどうかわからない…という場合はちゃんと調べる

そもそも、例外が発生するかどうかわからない、というような曖昧な状態でメソッドを使わないことです。
必ずわからないことは調べる。不明点を残さない。それでもわからない場合は別の手段を模索する。
後はクライアントと調整、です!
以上、try-catch文の使い方についてでした。
