最初に例外について。

Javaの例外といえばNullPointerException、NullPointerExceptionといえばJavaの例外と言われるほどNullPointerExceptionはJava開発でよく発生するが、この例外をつぶすのは初心者には意外と難しい。何がnullなのか分からないからだ。だがコツをつかめば簡単に分かる。

NullPointerExceptionが発生する箇所はnullが格納された変数のメソッドである。これ以外にない。

str=str.substring(2,3);

エラーログがNullPointerExceptionが発生したのはこの行だと示していたとしよう。この行に変数はメソッドはsubstringしかない。とすればstrにnullが混入しているとすぐにわかる。
では次の行でなNullPointerExceptionが発生していたならどうか。

v1.m1(v2).m2();

このコードにはメソッドが2つある。このままではNullPointerExceptionがどちらで発生しているか分からない。そこで次のようにリファクタリングする必要がある。

v3=v1.m1(v2);
v3.m2();

これならメソッドが1行にある1つとなるため、どちらでNullPointerExceptionが起きたかがわかる。

良いコードとは読みやすいだけでなく解析しやすいコードなのである。