NetBeansを使用してJavaでメソッドをデバッグしようとしています。なぜNetBeans Javaデバッガはこのコードに到達しませんか?
方法があることを:
public Integer getNumberOfClamps(Locations paLocation) {
Integer ret = -1;
List list = new ArrayList();
String removeme = "ABC";
if (paLocation == null) {
return ret;
}
try {
IO io = new IO(this.getSchemaName());
Session session = io.getSession();
String sql = "select count(*) from assets a join assettypes at on (at.id = a.assettype_id) ";
sql += "where a.currentlocation_id = " + paLocation.getId() + " and at.clamp = 1 and at.active = 1;";
list = session.createQuery(sql).list();
// for some reason, list is empty yet MySQL reports 40 records
// and the following two lines are never reached!
ret = list.size();
removeme = "WHAT???";
} catch (Exception ex) {
ret = -1; // explicitly set return
} finally {
return ret;
}
}
方法の中央に向かって、あなたは、これはSQLを手動で実行されたときに、私が得るにもかかわらず、空のリストを返して、いくつかの理由list = session.createQuery(sql).list();
が表示されます40の結果。
しかし、奇妙な部分は、.list()
が呼び出されると、ブロックfinally
にジャンプし、決して残りに達しないということです。だからテストのために、 'removeme'はWHAT???
に等しくなければならないが、デバッガはそれをまだABC
と報告する。
何がありますか?
キャッチブロックを通過していませんか?確かに例外がスローされているように聞こえます... –
これはひどい例外処理ですが、あなたは何が起こったのかを知っているはずですので、少なくともstacktraceを印刷してください! –
@JonSkeet絶対に確実です。例外ブロックに他のコードがありました。あなたが見ているのはちょっとスリムな例です。 – cbmeeks