【備忘録】JavaのTry-Catchの範囲
はじめに
JavaでDBにCRUDする処理を書いているときに悩んだのでメモします。
結論
例外処理の範囲は別の個所の例外を拾わないようにできるだけ例外が起こると予想されるソースのみにする。ただし細かく範囲を指定しすぎるとソースがtry-catchだらけになり、可読性が下がるのでいい感じにすること。
詳細
以下のように条件式によって更新したり登録したりする場合、どこからどこまでをTry-Catchで囲めばいいのか悩みました。
public class DbCrud{
public static void main(String[] args) {
事前処理
if (条件式){
更新処理
}else{
追加処理
}
事後処理
}
}
いろいろ調べてみる前の私は DB操作=例外がおきやすいイメージなので例外処理をしないと… くらいの認識でした。
脳筋で行くならメソッドの最初から最後まで囲んでおけば例外を漏らすことはありません。が、捕まえたいDB操作以外例外も捕まえてしまいます。あと、どの例外を捕まえたのかログに出すためにCatchが多くなりそうです。
と、なると更新処理と追加処理のそれぞれをTry-Catchで囲む…?今は2つだからまだいいとして3つ4つとDB操作の処理が増えたらTry-Catchだらけ…と思いながら結局この処理は更新処理と追加処理のそれぞれを囲みました。
Try-Catchで囲んだほうがいい処理が増えたときに、どの範囲で囲んだらいいかはその時々で臨機応変に対応しないといけなそうです。
参考サイト
https://www.javadrive.jp/start/exception/index2.html
https://www.bold.ne.jp/engineer-club/java-try-catch#-try