zoukankan      html  css  js  c++  java
  • Pixysoft.Framework.Verfication 5.0 开发实录

    exception handling application block

    目标:

    1. 曾经捕捉过的exception,不再记录。(日志方面)  

    2. 可以查看当前方法是否有exception。

    利用反射,自动查询当前的方法是否存在exception。然后可以自动添加attribute

    也可以深层递归,获取异常。

    3. 当前的ex是否应该抛出。

    --------------------------------------- 

    什么时候应该抛出异常?

    软件的一切都是围绕着方法调用,给出输入参数,获取期望值。

    因此产生2个问题:

    1. 没有给出符合要求的输入参数。

    2. 没有返回符合要求的期望返回值。

    是否应该抛异常,取决于 返回值 能否代表 失败的返回

    那么什么时候会产生失败的返回:

    1. 没有给出符合要求的输入。

    2. 内部由于外界因素,产生了超乎预期的操作(例如磁盘IO错误、网络、内存等)

    3. 内部运算结果没有符合预期的结果(例如找不到)

    ---------------------------------------------------------------

    那么,返回值到底包含那些?

    1. 值类型,例如int/string/double

    2. bool类型, 例如bool

    3. 枚举类型, enum

    4. 对象类型, 就是其他类型,包括接口、类、集合等。

    ----------------------------------------------------------------- 

    BOOLEAN ENUM

    首先看bool类型,如果bool表示的是操作成功、失败,则绝对不能抛出异常。

    如果是表示非方法调用的另外两种结果,例如IsGirl,那么如果出现1、2情况,抛出异常。

    ----------------------------------------------------------------- 

    INT DOUBLE。。。 

    再看值类型,一般值类型有代表失败的含义,例如int = -1; double = Double.MinValue等,那么什么时候抛出异常?

    这个需要用户自己声明了,如果设定了失败操作的返回值,则不抛出异常,否则1、2抛出异常,3不需要抛出异常。

    ----------------------------------------------------------------- 

    String

    和上文一直,有可能string = null代表操作失败。这个时候,不抛出异常。

    否则,出现了1、2抛出异常。 

    ----------------------------------------------------------------- 

    同上,如果null代表失败,那么不抛出异常。否则抛出。

    小结一下:

    抛出异常的可能性包括了:

    1. 没有给出符合要求的输入。

    2. 内部由于外界因素,产生了超乎预期的操作(例如磁盘IO错误、网络、内存等)

    3. 内部运算结果没有符合预期的结果(例如找不到)

    是否应该抛出异常,就取决于

    1. 当前方法是否允许异常。 

    2. 当前方法的返回值能否代表失败。 

    所以,可以总结出:

    1. 线程、异步操作属于“不允许异常”,所有异常都要捕捉。

    2. 如果有返回值能代表方法失败,则不抛出异常。

    3. 其余的一概抛出异常。 

    因此,一共有3种attribute,令+1种隐含的attribute,分别是:

    1.  输入不符合要求:VerificationFailedException 

    2.  外界因素引起的exception,包括了系统自身的exception,和他们的总类:UnexpectedExternalException 

    3.  没有符合结果的异常,UnhandledResultException

    4.  没有异常,NoException

    以后一律只能使用以上3中异常,当抛出的时候,他们会调用反射堆栈,自动获取抛出点信息。不需要自己制定。 

    Exception Handle BLock 只是处理了当前的exception是否应该抛出。采用了全局的配置。目前没有参考价值。是否应该抛出,是由业务逻辑决定的。不应该是配置。

    会抛出什么,又是由API框架包含了,也不应该从代码、反射中获得,否则性能非常低下。因此到目前位置,无法进一步开发。先终止了。

    开始时间:2010-04-17 结束时间 2010-04-18.

    实现了对当前exception 的封装,成为4种类型。同时记录了是否被handle,防止重复的处理。 

  • 相关阅读:
    Spring整合SpringDataJpa配置文件头
    SpringDataJpa全部依赖
    Spring data jpa persistence .xml 配置文件
    最新为Phpstorm配置xdebug 进行断点调试
    如何根据不同的浏览器写不同的css样式达到兼容
    关于ecshop的那些故事
    安装xampp 后 发现 apache 启动不起来
    关于在biweb 中安装完成后 首页上方报错问题的解决
    phpstormn 中 xdebug 的详细配置2
    关于phpstorm中安装配置xdeug
  • 原文地址:https://www.cnblogs.com/zc22/p/1714045.html
Copyright © 2011-2022 走看看