回答編集履歴

1

スタックトレースから再帰

2017/04/16 10:55

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -69,3 +69,21 @@
69
69
  この時、第1引数に今のCellのright、つまり最初に確認した通り、**null**が渡されてしまいます。
70
70
 
71
71
  再帰したaddToRowメソッドでnullのCellに対し、valueメンバを呼ぼうとしましたが、それはできないよということで、NullPointerExceptionになったのです。
72
+
73
+
74
+
75
+ スタックトレースからも再帰していることが読み取れます。
76
+
77
+ ```
78
+
79
+ Exception in thread "main" java.lang.NullPointerException
80
+
81
+ at week08.Tableau.addToRow(Tableau.java:44)
82
+
83
+ at week08.Tableau.addToRow(Tableau.java:54)
84
+
85
+ at week08.Tableau.main(Tableau.java:93)
86
+
87
+ ```
88
+
89
+ 例外が発生したのは確かに2行目で示されている通り44行目なのですが、それを呼び出したのはその下のスタックトレースで示されている、54行目なのです。これが`return addToRow(curr.right, maxV);`なので、再帰となって呼び出されている、つまり引数が当初と違う可能性があるということがわかります。