-1

DBに既存のオブジェクトを挿入しようとすると、例外をスローするメソッドがあります。

 public void addInDB() throws Exception {
    if (isInBase()){
          throw new Exception ("[ReqFamily->addInDB] requirment already in base");
    }
    int idParent = m_parent.getIdBdd();

    idBdd = pSQLRequirement.add(name, description, 0, idParent,   
    ReqPlugin.getProjectRef().getIdBdd(), 100);
}

したがって、例外がスローされたときに、それをキャッチして、管理対象Beanにエラーメッセージを表示したいと思います。

PS:私のマネージドBeanでは、メソッドを呼び出すだけです:

void addReq(Requirement req){
    try {
        ReqFamily pReqParent = (ReqFamily) selectedNode.getData();
        req.setParent(pReqParent);
        req.addInDB();//here i want to catch it 


        DefaultTreeNode newReqNode = new DefaultTreeNode(req,selectedNode);
        if (pReqParent!=null){
            pReqParent.addRequirement(req);
        }

    } catch (Exception ex){

        ex.printStackTrace();
    }
}
4

3 に答える 3

1

これを試して:

        try {
            req.addInDB();//here i want to catch it 
        } catch (Exception ex){
            ex.printStackTrace();
        }
于 2012-11-16T16:16:32.427 に答える
1

キャッチしたり投げたりするのは悪い習慣Exceptionです。使用するコードがチェック済み例外をスローする場合は、その特定の例外をキャッチして、try-catchブロックのサイズを最小限に抑えるようにしてください。

class MyException extends Exception {
    ...

public void addInDB() throws MyException {
    if (isInBase()){
        throw new MyException ("[ReqFamily->addInDB] requirment already in base");
    }
    ...

void addReq(Requirement req){
    ReqFamily pReqParent = (ReqFamily) selectedNode.getData();
    req.setParent(pReqParent);

    try {
        req.addInDB();
    } catch (MyException ex){
        ex.printStackTrace();
    }

    DefaultTreeNode newReqNode = new DefaultTreeNode(req,selectedNode);
    if (pReqParent!=null){
        pReqParent.addRequirement(req);
    }
}
于 2012-11-16T16:19:13.713 に答える
1

これを試すことができます:

void addReq(Requirement req){
    try {
        ReqFamily pReqParent = (ReqFamily) selectedNode.getData();
        req.setParent(pReqParent);
        req.addInDB();//here i want to catch it 


        DefaultTreeNode newReqNode = new DefaultTreeNode(req,selectedNode);
        if (pReqParent!=null){
            pReqParent.addRequirement(req);
        }

    } catch (Exception ex){

        JOptionPane.showMessageDialog(null, ex);
    }
}

すべてのスタック トレースをキャプチャしてディスプレイに表示する場合は、次のように使用できます。

catch (Exception ex) {

   String
   ls_exception = "";

   for (StackTraceElement lo_stack : ex.getStackTrace()) {

      ls_exception += "\t"+lo_stack.toString()+"\r\n";

   }

   JOptionPane.showMessageDialog(null, ls_exception);
}
于 2012-11-16T16:22:00.203 に答える