一个exception问题

djboy 2002-09-09 04:55:02
我自定义了一个exception, 代码如下:
package jp.co.toho.util;

public class RCException extends Exception
{
public String errorCode;
public RCException ()
{
}

public RCException(String msg)
{
super(msg);
}
}

然后在sessionbean程序中如下写:

if (xxx) {
throw new RCException("ECM0001");
else {
throw new RCException("ECM0002");
}

我在servlet中catch它们的语句如下:

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

}

}

但是结果是能catch住但是却不进入条件判断, 这应该是那里的问题呢?



...全文
29 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
djboy 2002-09-09
  • 打赏
  • 举报
回复
现在问题有新进展.

我又检查了一下e.getMessage()返回的消息,发现显示如下:
=======95=====rce.getMessage()=====104----ECM0001

Start 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的错误, 而且还把堆栈信息给取出来了.
但是我只想取得错误号,这应该怎么做呢?

xiao_yuer 2002-09-09
  • 打赏
  • 举报
回复
你写的没错啊。那样完全可行。
是不是0和"o",大小写弄错了啊。
djboy 2002-09-09
  • 打赏
  • 举报
回复
用System.out.println("======"+e.getMessage())
输出的结果是ECM0001.
Doctor11971 2002-09-09
  • 打赏
  • 举报
回复
我觉得应该没问题呀!应该可以判断出来.你把那个信息打印一下看看是什么结果吗?是那错了不就可以判断了吗?
如果打印的是"ECM0001",就用这样试试
if (e.getMessage().trim().equals("ECM0001"))
upc_chenli 2002-09-09
  • 打赏
  • 举报
回复
你可以覆盖getMessage()方法。
mem_fox 2002-09-09
  • 打赏
  • 举报
回复
还是多定义几种Exception,用catch(XXException e) {} catch(XXXException xe)的方法处理不同的异常吧
djboy 2002-09-09
  • 打赏
  • 举报
回复
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
}
}
Joeblackyang 2002-09-09
  • 打赏
  • 举报
回复
e.getMessage()得到的肯定不是你想要的ECM0001,它不是用来得到Exception的类型的,而是用来打印异常信息的。
你可以 catch( RCException e) 来捕获。
colin1022 2002-09-09
  • 打赏
  • 举报
回复
楼上什么意思?

代码拿来看看
djboy 2002-09-09
  • 打赏
  • 举报
回复
我原来就是想那么实现, 可是从sessionbean中传出来的好象除了exception就是remetoexception,我自己定义的不知道怎么给分出来, 所以才用的现在这个方法.
alphazhao 2002-09-09
  • 打赏
  • 举报
回复
为什么不定义几个不同的违例呢?
直接通过catch(特定的违例)来判断是哪种违例岂不是速度更快?
省略了几个比较和if判断
oracle3 2002-09-09
  • 打赏
  • 举报
回复
try {
xxxx...
} catch (Exception *e) {
if (e->getMessage().equals("ECM0001")) {
xxxx

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧