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
随机推荐
- iOS 导出 ipa 包时 三个选项的意义
OS 导出 ipa 包时 三个选项的意思 如图 在 iOS 到处 ipa包的时候 会有三个选项 Save for iOS App Store Deployment Save for Ad Hoc D ...
- [转]GIT PUSH Error 403的解决方法
http://stackoverflow.com/questions/7438313/pushing-to-git-returning-error-code-403-fatal-http-reques ...
- android基础知识13:AndroidManifest.xml文件解析
注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- Logistic回归的牛顿法及DFP、BFGS拟牛顿法求解
牛顿法 # coding:utf-8 import matplotlib.pyplot as plt import numpy as np def dataN(length):#生成数据 x = np ...
- 自定义android程序一段时间无操作后的功能
项目中遇见一个这样的需求,就是当软件在一定时间没有操作时候需要弹出广告页面,当点击广告页面时又进行软件操作,也就是广告要在软件打开并且处于未操作状态才会出来. 方法一:用handler+onTouch ...
- js button onclick动作赋值操作
昨天遇到的小问题 记录下 主要的东西其实都在这里:http://www.jb51.net/article/35107.htm 我稍微写一下: <script> function show( ...
- python_Day_02[数组、列表、元组之篇]
一.对python中.pyc的理解 1).pyc文件可以理解为是python编译好的字节码文件,即只有python解释器才能读懂,类似于java中class文件 2)python运转过程: 当pyth ...
- unity, 搜索组件
Hierarchy的搜索栏中既可以搜节点名,也可以搜组件名.
- 【转】 Ucenter同步登录原理解析
应用中调用函数us_user_synlogin并输出 echo uc_user_synlogin($uid); 解析: 1. 该函数位于client.PHP中 2. 作用实质上是调用ucenter u ...
- python数据类型之int用法
1.查看整型的用法 CODE:print(dir(int))['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', ...