NetBeans 6.0 を使うにあたってのポイント その6

今回は注意すべきところとして。

例外が発生する可能性のあるメソッド呼び出しはALT+RETURNでtry〜catchをつけるか、throwsに追加するかの選択肢がでてくるのだが、try〜catchのほうが動かないことがある。NetBeans再起動しても直らないので単純にバグかと。しかもなぜか定義しているインターフェースが勝手にひらいたりする。

5.5.1までは動かないことなんて一度もなかったんだけれどもね。それにここローカライズされてないねぇ。
スタックトレースは以下のとおり。

java.lang.NullPointerException
at org.netbeans.modules.java.source.builder.TreeFactory.Type(TreeFactory.java:591)
at org.netbeans.api.java.source.TreeMaker.Type(TreeMaker.java:823)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$TransformerImpl.createCatch(MagicSurroundWithTryCatchFix.java:289)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$TransformerImpl.createCatches(MagicSurroundWithTryCatchFix.java:296)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$TransformerImpl.visitBlock(MagicSurroundWithTryCatchFix.java:393)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$TransformerImpl.visitBlock(MagicSurroundWithTryCatchFix.java:201)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:779)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:49)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$1.run(MagicSurroundWithTryCatchFix.java:191)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix$1.run(MagicSurroundWithTryCatchFix.java:134)
at org.netbeans.api.java.source.JavaSource.runModificationTask(JavaSource.java:842)
at org.netbeans.modules.java.hints.errors.MagicSurroundWithTryCatchFix.implement(MagicSurroundWithTryCatchFix.java:133)
at org.netbeans.modules.editor.hints.HintsUI$1.run(HintsUI.java:576)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)

[追記]
どうもプ複数のロジェクトでのライブラリの参照の問題だったようだ。それならなぜコンパイルエラーのほうを表示してくれないのだ・・・。


あと6.0.1だとtry〜catchの範囲が無駄に広いことも問題。範囲選択してそこだけ囲まれると便利なんだけどね。対象はスタックの範囲を見ているようなので、制限したい場合あらかじめメソッドを「{」「}」で囲んでおくことをお勧めしておく。

{
  hoge();
}

そのあと中括弧をはずすのがまただるいんだが、仕方がないか。5.5より退化した部分だと思うので注意しておくこと。