OAF—Error Handling

来源:互联网 发布:网络编程开源项目 编辑:程序博客网 时间:2024/05/18 03:22
OAF提供了三种类型的Exception:
1. General Exception:
Class: oracle.apps.fnd.framework.OAException
提供了在运行时刻同时显示多种类型异常的手段,结合EBS的Message Dictionary,可显示有用的消息。
2. Validation Exception:
Class: oracle.apps.fnd.framework.OAAttrValException /oracle.apps.fnd.framework.OARowValException
分别代表字段级/记录级的校验异常。可用在字段级或记录级的校验代码中。继承于OAException,显示方式与General Exception类似,但调用方法有差别。
3. Severe Exception:
致命异常,通常用于系统级别的异常。此异常往往由OAF自动抛出,以OAErrorPage的方式显示给用户。比如记录指针读数大于最大记录数时,就会抛出NullPointerException。
 
主要学习前两种异常。
 
OAException
此异常用于常规的错误。
调用方法: OAException
OAException(String appShortName, //应用短名
           String messageName, //消息名称
           MessageToken[] messageTokens, //消息参数
           byte messageType, //异常类型
           Exception[] details) //异常明细
可以省略其中部分参数,例如:OAException(String messageName)
                       OAException(String messageName, byte messageType)
                     OAException(String messageName, MessageToken[],byte messagType)
等等。
其中的异常类型包括如下几种:
OAException.ERROR  //错误
OAException.WARNING  //警告
OAException.INFORMATION  //信息
OAException.CONFIRMATION //确认
OAException.SEVERE //致命
 
定义方式:
1.定义异常的的实例变量,然后抛出
OAException errormessage = new OAException(…);
throw errormessage
 
2直接生成实例抛出
throw new OAException(…);
 
抛出方式:
1. Messagebox抛出
throw new OAException(…);
 pageContext.putDialogMessage(…);
2. Dialog page抛出
后续详述
 
一个简单的例子:
 
OACellFormatBean shipTermsCell =
  (OACellFormatBean)webBean.findIndexedChildRecursive("ShipTermsCell"); if (shipTermsCell == null)
 {
  MessageToken[] tokens = { new MessageToken("OBJECT_NAME", "ShipTermsCell")};
  throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", tokens);
 }
 
 
OAAttrValException
此异常在字段校验时抛出。
调用方法:OAAttrValException
OAAttrValException(int objType, //对象类型
                  String objName, //对象名称
                  Key key, //对象主键
                  String attrName, //字段名
                  Object attrValue, //错误的字段值
                  String appShortName, //应用短名
                  String messageName, //消息名称
                  MessageToken[] messageTokens, //消息参数
                  byte messageType, //消息类型
                  Exception[] details, //异常明细
                  boolean peer
                  )
其中的objType包括:
有很多,具体参见JAVADOC。这里主要两个:
TYP_ENTITY_OBJECT  EO对象
TYP_VIEW_OBJECT    VO对象
 
定义与抛出方式与OAException一致。请注意,此异常一般用在set<Attribute Name>()方法中。
 
一个简单的例子:
EO:
public void setSalary(Number value)
{
  if (value != null)
  {
     // Verify value is > 0     if (value.compareTo(0) <= 0)
     {
        throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT, // indicates EO source
                                     getEntityDef().getFullName(), // entity name
                                     getPrimaryKey(), // entity primary key
                                     "Salary", // attribute Name
                                     value, // bad attribute value
                                     "AK", // nessage application short name
                                     "FWK_TBX_T_EMP_SALARY_REQUIRED"); // message name      }
    setAttributeInternal(SALARY, value);
  }
} // end setSalary()
 
 
 
 
 
VO:
setDescription(String value)
{  if("XXX".equals(value)
   {    throw new OAAttrValException (
                                               OAException.TYP_VIEW_OBJECT, // indicates VO row source
                                              ((ComponentObject)getViewObject()).getName(), // view instance name  
                                               getKey(), // row primary key                        
                                              "Description", //attribute name      
                                              value, // bad attribute value        
                                             "FND", //message application short name              
                                            "ATTR_EXCEPTION"); // message name
 }
setAttributeInternal("Description", value);
 } // end setDescription()

作者 “红豆加奶”


文章原处:http://www.2cto.com/database/201109/102495.html

0 0