質問: try catchは避けるべき? c++の質問ですが、 gotoレスは当たり前として(c++に限ったことではないですが)、 try catchもやっぱり避けるべきですか?
回答: c++ の例外機能の使い方が時として問題になるのは、エラーの発生点(through した点)とエラーを補足した点(catch した点)が離れているからです。 一方、例外処理の思想自体が、 ・エラーの発生点は、具体的なエラーの内容はわかるが、修復方法はわからない。 (srqt() の引数が、-1 だったらエラーだというのは、sqrt() の中ではわかるが、どうして -1 が来たのか、どう回復したらいいのかはわかない) ・エラーの補足点は、具体的なエラーの内容はわからないが、エラーの原因や対処方法は知っている (sqrt() の引数が「範囲外」だったら、入力されたデータがおかしい。だから、もう一度入力をしてもらおう) という、発生点と補足点の距離をふまえて適切に処理を仕様というところから来ています。 なので、「例外処理の思想」にはずれないように、発生点の役割と、補足点の役割が把握できている限り問題はありません。 逆に、「エラーが起こったら、とりあえず例外処理」という発想だと、設計が破綻することが多いですね。 goto レスにしても、今では「あたりまえ」ではありません。goto を使うべきところで、goto を回避するための「テクニック」を駆使すると、制御の流れがとても不自然になります。