NBS符号化ノット1
くれぐれも注意してください:対象が空ではない判断は必ず常に注意しなければなりません!空のポインタが異常に放出される可能性があります.この苦しみをなめたことがあるので,後でもっと注意しなければならない.
-』空のポインタ異常は、おそらくJava符号化で最もよく見られる異常です.(20090512追加)
メールテキスト変換で発生した問題:
質問1:
this. *** MessageDaoは空です.もともと、ManagerFacadeImplクラスの初期化メソッドに対応するset文を追加する必要がありました.
たとえば、メール管理で***MessageDaoを使用したい場合は、mailManager.という文を追加します.setBbsMessageDao( *** MessageDao);
-』ManagerFacadeImpはメンズモードで、ここでは様々な初期化作業(例えば***DAO)を行うことができます.そうすれば、他の場所で使いたい(***DAO)なら、直接持ってきて使うことができます.(20090512追加)
問題2:キャプチャされた異常情報:Transform of class jp.co.intra_mart.***.yyy not supported
理由:クラスM Dataではクラスyyyy(メンバー変数としてM Dataで使用される)が使用されているが、注釈が付けられている.
@Element (name = " yyy " , required = false )
private YYY yyy ;
ただしYYYクラスでは,使いたい属性に注釈を付けていない.
次のように変更します.
@Element(name = "title", required = false )
private String title ;
質問3:java.lang.reflect.InvocationTargetException
この異常の原因は空のポインタ異常で、元は属性作成時間がnullだった.
ソリューション:次のように、空でない判断と処理を追加します.
@Element (name = "created_date" , required = false )
public String getCreatedDateString() {
Date d = getCreatedDate();
if (d != null ) {
return dateFormat .format(d);
} else {
return null ;
}
}
PropertyNotFoundException :
具体的な異常情報:Caused by:javax.el.PropertyNotFoundException : 'minRang' is an unknown bean property of 'jp.co.intra_mart. **** . **** l'
理由:JSPファイルに対応する属性名が書き間違えた(Beanファイルの属性名とJSPファイルの対応する属性名が一致しない).
javax.servlet.jsp.JspException: org.apache.struts.taglib.html.没有对BEAN这个名字bean的专业mailSendType的盖特梅索德
この異常の意味は、mailSendTypeという属性にはgetメソッドが書かれていないということです.
問題現象:ブレークポイントが設定されているのに、debugは入れません.
解決プロセス:まずサーバがdebug方式で起動していることを確認し,最外層の呼び出しコード(Action中)が注釈されていることを調べた.
問題現象:listにオブジェクトを挿入します.このオブジェクトは確かに空ではありませんが、空のポインタ異常を報告しました.
原因:list自体が空です.
-』listにオブジェクトを挿入すると、挿入されたオブジェクトが空であってもポインタ異常を報告するようなエラーは発生しないはずです.(20090512追加)
建事件の画面が入らない(直接エラーページにジャンプした)、ページに付きまとうな.対応するActionを見つけ、ブレークポイントを設定し、debugは、毎回token処理セグメント(二次繰り返しコミット防止)にジャンプし、同僚が前の問題(二次繰り返しコミット防止)に対応したときにこの問題を引き起こしたことを発見した.