• 错误处理与异常处理


    1. 异常处理的打包及自定义异常类

    ACMEPort port = new ACMEPort(12);
    
    try {
        port.open();
    } catch (DeviceResponseException e) {
        reportPortError(e);
        logger.log("Device response exception", e);
    } catch (ATM212UnlockedException e) {
        reportPortError(e);
        logger.log("unlock exception", e);  
    } catch (GMXError e) {
        reportPortError(e);
        logger.log("Device response exception", e);
    } finally {
        ...
    }

    重复的代码就是坏味道,为了代码结构更为清晰,有两处修改方向:

    • 将重复的异常处理,打包成一个类的成员函数;
    • 自定义异常类 PortDeviceFailure,其构造函数接受(DeviceResponseException、ATM212UnlockedException、GMXError 具体异常类的)父类(如 ACMEException)引用;

      LocalPort port = new LocalPort(12);
      
      try {
          port.open();
      } catch (PortDeviceFailure e) {
          reportPortError(e);
          logger.log(e.getMessage(), e);
      }
      
      
      public class LocalPort {
          private ACMEPort innerPort;
      
          public LocalPort(int portNum) {
              innerPort = new ACMEPort(portNum);
          }
      
          try {
              innerPort.open();
          } catch (DeviceResponseException e) {
              throw new PortDeviceFailure (e);
          } catch (ATM212UnlockedException e) {
              throw new PortDeviceFailure (e);
          } catch (GMXError e) {
              throw new PortDeviceFailure (e);
          }
      }
      
      public class PortDeviceFailure extends Exception {
          private ACMEException acmeExce;
          public PortDeviceFailure (ACMEException exce) {
              acmeExce = exce;
          }
          public String getMessage () {
              return ....;
          }
      }
  • 相关阅读:
    C/C++筛选法算素数
    JAVAFX-5事件总结
    JAVAFX-5 开发应用
    JAVAFX-4 开发应用
    JAVAFX-3 开发应用
    JAVAFX-1 开发应用
    JAVAFX-2 开发应用
    Swing 100行画图示例
    Java的Json解析包FastJson使用
    杨辉三角
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421050.html
Copyright © 2020-2023  润新知