zoukankan      html  css  js  c++  java
  • 错误处理与异常处理

    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 ....;
          }
      }
  • 相关阅读:
    poj3673
    poj3438
    poj3461
    poj3518
    poj3672
    变秃了,也变强了!爆肝吐血整理出的超硬核JVM笔记分享!
    左手字节,右手阿里,我是如何通阿里架构师的java面试文档,拿到多家大厂offer的
    Java异常处理与常用类
    copy_{to, from}_user()的思考
    vi文本编辑器常用指令功能
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421050.html
Copyright © 2011-2022 走看看