質問: h + j c=a+b ``` 上の計算をする場合d,f,g,h,jは変数で、 aの計算でエラーが出た時(例えばgでNoMethodError)にはaの計算はそこで終了(fで終了)し、b・cに進みたいのですが例外処理のrescue部分に何を書いていいのか思いつきません。 何かいい方法がありましたら教えていただきたいです。
回答: 例外のあるプログラミング言語において、基本的に、プログラミングのミスに起因する例外と、そうでない例外(ファイルが壊れてた、ネットワークがつながらなかった、など)があります。 NoMethodError は、基本的にプログラム記述のミスに起因する例外です。この処理が、メソッドの中のどの部分で表れているのか分からないので、推測になりますが、たとえば: * if 文でのみ g の変数への代入が行われている。条件次第では g への代入が行われない場合がある + => g をメソッドの最初に 0 で初期化しておきましょう。 * method_missing を用いたような、利用可能なメソッドが動的に変化するオブジェクトの中での処理中のできごとである。 + => `respond_to? :g` で、 g というメソッドが存在するかどうかチェックする など、基本的にプログラム側で対処した方がベターです。