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异常处理及实现(案例)的更多相关文章

  1. struts2官方 中文教程 系列八:异常处理

    在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...

  2. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  3. OAF_EO系列6 - Delete详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  4. OAF_EO系列5 - Update详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  5. OAF_EO系列3 - Initialize详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  6. OAF_EO系列4 - Create详解和实现(案例)

    2014-06-02 Created By BaoXinjian

  7. Web API系列(三)统一异常处理

    前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...

  8. OAF_EO系列2 - Validation数据校验验证机制(概念)

    2014-06-12 Created By BaoXinjian

  9. OAF_EO系列1 - Definition定义(概念)

    2014-06-14 Created By BaoXinjian

随机推荐

  1. phpwind8.7升级9.0.1过程(四)20130207升级到20141228

    每一次升级前都要注意备份 1.网站根目录的所有文件 2.网站的数据库 根据phpwind官方教程 更新到20130702版本成功并备份 更新到20140428版本成功并备份 20141228版本的更新 ...

  2. Python笔记本

    Python 的主提示符( >>> )和次提示符( ... ).主提示符是解释器告诉你它在等你输入下一个语句,次提示符告诉你解释器正在等待你输入当前语句的其它部分. 下划线(_)在解 ...

  3. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  4. 【转】 iOS日常学习 - iOS10上关于NSPhotoLibraryUsageDescription等问题

    原文网址:http://blog.csdn.net/wang631106979/article/details/52578001 最近升级了Xcode8.0,真是很多坑啊,填完一个来另外一个,今天又遇 ...

  5. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

    http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...

  6. ASP.NET MVC报错: Multiple types were found that match the controller named

    当使用ASP.NET MVC的Area功能时,出现了这样的错误: Multiple types were found that match the controller named 'Home'. T ...

  7. html dl dt dd标签元素语法结构与使用

    dl dt dd认识及dl dt dd使用方法 <dl> 标签用于定义列表类型标签. dl dt dd目录 dl dt dd介绍 结构语法 dl dt dd案例 dl dt dd总结 一. ...

  8. 删除除了Src属性以后的全部属性

      public static string RemoveAllAttributesWithoutSrc(string input)      {                   string p ...

  9. linux服务之udevd

    http://www.ibm.com/developerworks/cn/linux/l-cn-udev/[root@localhost ~]# uname -r2.6.32-431.el6.x86_ ...

  10. BigPipe 了解

    BigPipe是一个重新设计的基础动态网页服务体系.大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行.这是类似于大多数现代微处理器的流水 ...