家・車以外で、人生で一番奮発した買い物

以下のソースで、
NullPointerExceptionが出ます。
(202行目)
解決策がわかりません涙

どなたかわかる方いらっしゃいませんか?
https://pastebin.com/UV9TN4Sh

質問者からの補足コメント

A 回答 (5件)

> 710行目(

https://pastebin.com/UV9TN4Sh
> )の
> wrkPassDto.setCheckResult(checkResult);
>
> ここに着目してみろと言われたのですが、ここからなにがわかりますか?

教えてくれる人がいるなら直接聞いたらいかがですか?
ここからなにがわかるかって、それをちゃんと自分で考えるように促されたのではないのですか?

特定の1クラスだけ見せられて、業務の仕組みも何がしたいかも分からない赤の他人に聞くことじゃありませんね。

710行目はInsertWorkData()内で、データ登録用のメソッドですよね。
私が見せられたロジックだけ見たら、今回発生している箇所との関係性はありません。

教えてくれてる人が言っているのは、こういうこと言ってるんじゃないんですか?
 ・登録(InsertWorkData())でcheckResultには必ず数字が入ってDB登録されなければならない仕様。
 ・よって、検索(handleSearch())でcheckResultを得た時、nullになりえない。
 ・としたら、登録(InsertWorkData())でcheckResultがnullで登録されていることがおかしい。
  登録(InsertWorkData())の呼出元に問題があるのではないか。

まあ仮にそうだとしたら、DB設計上、Not NULL制約がないのもどうかと思いますし、その時に問題視していたのは、202行目で例外になることではなく、登録処理の単体テスト的に、checkResult項目の結果がNG出してる、ということ。

仕事でやってて、教えてくれる人がいるのならば、こんなとこで質問してないで、ちゃんと自分で考えて、考えた結果をその方に質問してを繰り返して、社内で消化しましょうね。
    • good
    • 0

> 自前というか、、、他人が作ったソースに機能修正を加える作業をしていて、その過程でエラーが


> 発生してしまいました。
それを自前と言います。
あなたが作ったか、他人が作ったかはどうでもいい話です。
利用しているフレームワークやライブラリの仕様ではないということです。

> https://pastebin.com/4N6Why0G
> こちらのDtoクラスに設定されています。
ご自分でデバッグ、トレースしたんですか?
本当にそこが問題となっているということを突き止めましたか?

getCheckResult()の戻り値はintではなくIntegerクラスですね。
クラスなんだったら、getKenshiAge()(177行目)の呼出の時と同様、それがnullではないという検証が必要ではありませんか?
インスタンス変数のcheckResultを初期化して、かならずnullではない、というコードが実現されているわけでもなさそうだし。
    • good
    • 0
この回答へのお礼

>それを自前と言います。
失礼いたしました(..)

710行目(https://pastebin.com/UV9TN4Sh
)の
wrkPassDto.setCheckResult(checkResult);

ここに着目してみろと言われたのですが、ここからなにがわかりますか?

お礼日時:2018/11/13 16:38

> getCheckResult()の部分がNullになっているようなのですが、なぜなのかわからなくて。

。。
明らかに自前のDTOクラスに自前でコードしたメソッドですよね。
追いかければnullになる原因は分かると思いますが。
仮にgetCheckResult()に問題があるとしたら、getCheckResult()の中身を見なければ解決なんてしませんよ。

dto.getWrkPassDto()によって得られるオブジェクトのクラスから、getCheckResult()メソッドを見つけ出してトレースしてみてはいかがですか。

getCheckResult()の結果がnullになっても、比較式がif (null != 0) となるだけで、例外は発生しないように感じますが。
NullPointerException自体、オブジェクトを操作しようとした際、オブジェクトがnullの時に発生するわけですからね。
    • good
    • 0
この回答へのお礼

自前というか、、、他人が作ったソースに機能修正を加える作業をしていて、その過程でエラーが発生してしまいました。

>getCheckResult()の中身を見なければ解決なんてしませんよ。
https://pastebin.com/4N6Why0G
こちらのDtoクラスに設定されています。

お礼日時:2018/11/13 16:00

ログを見る限り当該メソッドの202行目による発生なのは確実のようなので、


dto
dto.getWrkPassDto()
dto.getWrkPassDto().getCheckResult()
の結果をそれぞれ確認したらいかがですか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

getCheckResult()の部分がNullになっているようなのですが、なぜなのかわからなくて。。。

お礼日時:2018/11/13 15:41

dto変数もしくはgetWrkPassDto()で得た結果がnull、もしくはgetCheckResult内の処理のどこかでnull例外が発生しているのでは。


素直にトレースすればいいかと思いますし、例外をキャッチしてスタックトレースを確認してみてはいかがですか。
(どの場面においても例外をキャッチしているようには見受けられませんが、システムとしていいんですか?)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
getCheckResult()がNullになっているようなのですが、、
なぜか分からないうえ、プログラミングの知識がまだまだ浅いもので、どうトレース?すればよいのやらも。。。

お礼日時:2018/11/13 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!