OAF_EO系列7 - OAException异常处理及实现(案例)
2014-06-12 Created By BaoXinjian
Oracle Application Framework将异常分为三类
异常类型type
1. 常规异常General Exception
Class:oracle.apps.fnd.framework.OAException
Function: 提供了在运行时刻同时显示多种类型异常的手段,结合EBS的Message,可显示有用的信息
2. 验证异常Validation Exception
Class:oracle.apps.fnd.framework.OAAttrValException/OAROwValException
Function: 分别代表字段级和记录级的验证异常,用于字段级和记录级的校验,继承与OAException,所以可以显示方式有类似性
3. 严重的异常Server Exception
Function: OAF系统自动抛出,系统级别的异常,以OAErrorPage呈现给用户,比如OAF调试多次后抛出Space空间不足异常
异常包class
1. OAException
(1). 异常类型
OAException.ERROR //错误
OAException.WARNING //警告
OAException.INFORMATION //信息
OAException.CONFIRMATION //确认
OAException.SEVERE //致命
(2). 定义方式
定义异常的的实例变量,然后抛出
OAException errormessage = new OAException(…); throw errormessage;
直接生成实例抛出
throw new OAException(…);
(3). 抛出方式:语法
Messagebox抛出 - throw new OAException(…);
pageContext.putDialogMessage(…) - Dialog page 抛出
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)
2.1 OAAttrValException
如果在视图对象行或者实体对象中,任意属性级别的验证失败,你都可以像如下抛出一个OAAttrValException.语法
源对象类型(OAException.TYP_ENTITY_OBJECT或者OAException.TYP_VIEW_OBJECT)
完整的实体定义的名称或者视图实例的名字
实体或者行的主键
正验证的属性名
验证失败的属性值
错误消息所属的应用缩写名
错误消息名称
OAAttrValException(int objType, //对象类型
String objName, //对象名称
Key key, //对象主键
String attrName, //字段名
Object attrValue, //错误的字段值
String appShortName, //应用短名
String messageName, //消息名称
MessageToken[] messageTokens, //消息参数
byte messageType, //消息类型
Exception[] details, //异常明细
boolean peer)
2.2. OARowValException
如果在视图对象行或者实体对象上的任意的行级别的验证失败,你可以像下面展示的抛出一个OARowValException
要示例化这个异常,你必须传入以下的信息:
完整的实体定义名称或者视图对象名称
实体或者行的主键
错误消息所属的应用缩写名
错误消息名
3. BundledExceptions
Bundled exceptions 允许你在进行验证的时候叠加同等的异常,当你完成验证的时候一块显示给用户。这些同等的异常被分组到一个叫做bundled exception 的容器异常中.
可以包含任意类型的服务器端的异常(包括系统级的异常,数据格式错误,属性验证错误,行验证错误以及实体创建错误).
4. 异常class继承结构
5. 处理异常时 try- catch - finally 语法
案例:在一个客制化的页面上有ReportName栏位,如为空值,则提示用户进行录入
1. 在EBS定义Error Message,通过&P_EMPLOYEE_NAME进行传参数,动态地显示参数
2. 在FND_NEW_MESSAGES确认是否定义成功
3. 在OAF调用OAException 如果ReportName为空则,进行抛出异常
4. 通过定义异常,再进行抛出该异常,测试结果
5. 直接抛出该异常,测试结果
案例1. 在EO的字段添加异常,如果Total为0值,则抛出异常
1. 字段级验证异常调用
2. 字段级验证异常测试
案例2. 在EO的记录级validateEntity()添加异常,将多个字段组合进行判断,则抛出异常
1. 记录级验证异常调用
2. 记录级验证异常调用测试
例如: Jeveloper和EBS服务器断开,跑出的系统异常,系统异常就不做过多介绍了
Thanks and Regards
参考:Tony Liu - http://blog.itpub.net/10359218/viewspace-677445/
OAF_EO系列7 - OAException异常处理及实现(案例)的更多相关文章
- struts2官方 中文教程 系列八:异常处理
在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- OAF_EO系列6 - Delete详解和实现(案例)
2014-06-14 Created By BaoXinjian
- OAF_EO系列5 - Update详解和实现(案例)
2014-06-14 Created By BaoXinjian
- OAF_EO系列3 - Initialize详解和实现(案例)
2014-06-14 Created By BaoXinjian
- OAF_EO系列4 - Create详解和实现(案例)
2014-06-02 Created By BaoXinjian
- Web API系列(三)统一异常处理
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...
- OAF_EO系列2 - Validation数据校验验证机制(概念)
2014-06-12 Created By BaoXinjian
- OAF_EO系列1 - Definition定义(概念)
2014-06-14 Created By BaoXinjian
随机推荐
- 字符串p型编码
总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串12234411 ...
- php文件删除
<?php $dirname="shangchuan/uploads"; deldir($dirname); function deldir($dirname){ if(fi ...
- 课堂所讲整理:包装&工具类
package org.hanqi.array; import java.util.Random; public class BaoZhuang { public static void main(S ...
- Mysql存储日期类型用int、timestamp还是datetime?
通常存储时间用datetime类型,现在很多系统也用int存储时间,它们有什么区别?个人更喜欢使用int这样对于日期计算时比较好哦,下面我们一起来看到底那种会好些. int ().4个字节存储,INT ...
- hihoCoder#1080 (线段树)
题目大意:线段树的区间更改与查询,但是涉及到两种区间修改方式,一是给区间中的数全部加上一个数,二是将一个区间全部置为同一个数,然后询问整个区间和. 题目分析:处理好set操作和add操作的先后顺序就O ...
- Oracle数据库五种约束
oracle 数据库 数据表的5个约束类型:1.主键约束2.外键约束3.唯一约束4.检查约束5.非空约束 主键约束:用来唯一标示表中的一个列,一个表中的主键约束只能有一个,但是可以在一个主键约束中包含 ...
- opencv矩阵总结
OpenCV 矩阵操作 CvMat 转自:http://hi.baidu.com/xiaoduo170/blog/item/10fe5e3f0fd252e455e72380.html 每回用矩阵都要查 ...
- JavaScript验证
<script type="text/javascript"> /*密码*/ function password() { var pas ...
- dictEntry **table;
typedef struct dictht { dictEntry **table; PORT_ULONG size; PORT_ULONG sizemask; PORT_ULONG used;} d ...
- UMDH
1. 什么是UMDH UMDH=User Mode dump heap.把进程的堆dump下来.包括堆栈信息.UMDH是WinDbg附带的一个工具. 2. 下载安装 WinDbg.完事后在WinDbg ...