try {
   xxxx...
  } catch (Exception *e) {
    if (e->getMessage().equals("ECM0001")) {
xxxx}

解决方案 »

  1.   

    为什么不定义几个不同的违例呢?
    直接通过catch(特定的违例)来判断是哪种违例岂不是速度更快?
    省略了几个比较和if判断
      

  2.   

    我原来就是想那么实现, 可是从sessionbean中传出来的好象除了exception就是remetoexception,我自己定义的不知道怎么给分出来, 所以才用的现在这个方法.
      

  3.   

    e.getMessage()得到的肯定不是你想要的ECM0001,它不是用来得到Exception的类型的,而是用来打印异常信息的。
    你可以 catch( RCException e) 来捕获。
      

  4.   

    RCException 类:package jp.co.toho.util;public class RCException extends Exception
    {
    public String errorCode;
    public RCException ()
    {
    } public RCException(String msg) 
    {
            super(msg);
    }
    }sessionbean中的代码: if (mUserCollection.isEmpty()) {
    System.out.println("UserBean======41");
    throw new RCException("ECM0001");
    servlet中的接受:catch (Exception e)
     {
    //可以catch到, 并且e.getMessage() 可以返回ECM0001的错误. 
      if (e.getMessage().equals("ECM0001")) {
    //但是这里进不来.
        xxxx
    }
     }
      

  5.   

    还是多定义几种Exception,用catch(XXException e) {} catch(XXXException xe)的方法处理不同的异常吧
      

  6.   

    我觉得应该没问题呀!应该可以判断出来.你把那个信息打印一下看看是什么结果吗?是那错了不就可以判断了吗?
    如果打印的是"ECM0001",就用这样试试
    if (e.getMessage().trim().equals("ECM0001"))
      

  7.   

    用System.out.println("======"+e.getMessage())
    输出的结果是ECM0001.
      

  8.   

    现在问题有新进展.  我又检查了一下e.getMessage()返回的消息,发现显示如下:
    =======95=====rce.getMessage()=====104----ECM0001Start server side stack trace:
    jp.co.toho.util.RCException: ECM0001
            at jp.co.toho.ejb.UserBean.findByUsername(UserBean.java:42)
            at jp.co.toho.ejb.UserBean_3ptkm3_EOImpl.findByUsername(UserBean_3ptkm3_
    EOImpl.java:37)
            at jp.co.toho.ejb.UserBean_3ptkm3_EOImpl_WLSkel.invoke(Unknown Source)
            at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:296)
            at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
    ef.java:93)  也就是说e.getMessage()不仅取得了ECM0001的错误, 而且还把堆栈信息给取出来了.
      但是我只想取得错误号,这应该怎么做呢?