Java 正确处理ejb错误的方法

Java 正确处理ejb错误的方法,java,jakarta-ee,ejb,Java,Jakarta Ee,Ejb,我正在处理EJB客户机+服务器,我想知道如何处理客户机上的服务器数据错误。我应该检查客户端上的返回值还是捕获异常?使用返回值逻辑的示例: //server bean method public int create(MyObj obj) { int PKID = someDataService.create(obj); return PKID; } //client if(!(MyBean.create(obj) > 0)) { showMessage("Can'

我正在处理EJB客户机+服务器,我想知道如何处理客户机上的服务器数据错误。我应该检查客户端上的返回值还是捕获异常?使用返回值逻辑的示例:

//server bean method
public int create(MyObj obj) {
    int PKID = someDataService.create(obj);
    return PKID;
}

//client
if(!(MyBean.create(obj) > 0)) {
    showMessage("Can't create MyObj");
}
例外情况的例子:

//server bean method
public void create(MyObj obj) {
    int PKID = someDataService.create(obj);
    if(!(id > 0)) {
        //only EJBExceptions will be delivered to client
        throw new EJBException(new MyDataException());
    }
}

//client
try {
    MyBean.create(obj);
}
catch(EJBException e) {
    if(e.getCause().getClass.equals(MyDataException.class)) {
        showMessage("Can't create MyObj");
    }
    else {
        showMessage("Some boring error occurred");
    }
}

我知道,返回值检查而不是异常看起来像是在C中编码,但所有这些EJB的事情让我困惑。哪种方法更好?

从方法中抛出异常

public void create(MyObj obj) throws MyDataException  
并使用
ApplicationException

@javax.ejb.ApplicationException
public class MyDataException extends Exception
{

从方法中抛出异常

public void create(MyObj obj) throws MyDataException  
并使用
ApplicationException

@javax.ejb.ApplicationException
public class MyDataException extends Exception
{

我知道这只是一个例子,但是如果原因不是
MyDataException
,那么catch子句会默默地吞噬
EJBException
。你应该加入一个
else
子句来处理另一种情况。谢谢,任何人都不应该沉默地终止异常!我知道这只是一个例子,但是如果原因不是
MyDataException
,那么catch子句会默默地吞噬
EJBException
。你应该加入一个
else
子句来处理另一种情况。谢谢,任何人都不应该沉默地终止异常!