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. iOS 导出 ipa 包时 三个选项的意义

    OS 导出 ipa 包时 三个选项的意思 如图  在 iOS 到处 ipa包的时候 会有三个选项 Save for iOS App Store Deployment Save for Ad Hoc D ...

  2. [转]GIT PUSH Error 403的解决方法

    http://stackoverflow.com/questions/7438313/pushing-to-git-returning-error-code-403-fatal-http-reques ...

  3. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  4. Logistic回归的牛顿法及DFP、BFGS拟牛顿法求解

    牛顿法 # coding:utf-8 import matplotlib.pyplot as plt import numpy as np def dataN(length):#生成数据 x = np ...

  5. 自定义android程序一段时间无操作后的功能

    项目中遇见一个这样的需求,就是当软件在一定时间没有操作时候需要弹出广告页面,当点击广告页面时又进行软件操作,也就是广告要在软件打开并且处于未操作状态才会出来. 方法一:用handler+onTouch ...

  6. js button onclick动作赋值操作

    昨天遇到的小问题 记录下 主要的东西其实都在这里:http://www.jb51.net/article/35107.htm 我稍微写一下: <script> function show( ...

  7. python_Day_02[数组、列表、元组之篇]

    一.对python中.pyc的理解 1).pyc文件可以理解为是python编译好的字节码文件,即只有python解释器才能读懂,类似于java中class文件 2)python运转过程: 当pyth ...

  8. unity, 搜索组件

    Hierarchy的搜索栏中既可以搜节点名,也可以搜组件名.

  9. 【转】 Ucenter同步登录原理解析

    应用中调用函数us_user_synlogin并输出 echo uc_user_synlogin($uid); 解析: 1. 该函数位于client.PHP中 2. 作用实质上是调用ucenter u ...

  10. python数据类型之int用法

    1.查看整型的用法 CODE:print(dir(int))['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', ...