【问题标题】:How to only allow a certain number of io exceptions?如何只允许一定数量的io异常?
【发布时间】:2018-07-02 22:07:07
【问题描述】:

我想知道是否有一种好的标准方法可以在您停止尝试之前只允许一定数量的 IO 异常(连接超时等),并且可能会发送一封自动电子邮件让某人知道存在问题。我可以想出一种丑陋的方法来使用 try catch 块来保持计数器并在尝试之前检查该计数器的值。有没有更标准的更好的方法来实现它?

【问题讨论】:

标签: java ioexception


【解决方案1】:

只需创建一个充当计数器的ìnt`变量:

int counter = 0;
while (true){
    try{
        // do something
        break;
    } catch (IOException e) {
        e.printStackTrace();
        counter++;

        if (counter >= 10)
            throw new RuntimeException(e);
    }
}

它将捕获异常,打印堆栈跟踪,并且仅在计数器超过 10 时才重新抛出异常。电子邮件发送部分将更加困难,原因如下:

  • 您需要一个库来发送电子邮件 (AFAIK)
  • 您需要配置邮件服务器
  • 您需要对服务器进行身份验证(用户需要提供密码或者您需要对密码进行硬编码 --> 不好的做法)
  • IOException 的一个可能原因可能是计算机未连接到 Internet。在这种情况下,发送电子邮件也会失败。

【讨论】:

  • 好吧,是的,我想过做这样的事情,我只是想可能有一种不同的、更(专业?)的方式(因为这是我在我的第一个 java 类中写的那种东西)。我想基础知识确实有效。谢谢!
  • 如果它对您有用,请考虑将其标记为解决方案。谢谢 :-)
  • 如果你想在很多地方使用这个代码块,我建议你将计数器逻辑包装成一个单独的静态方法在一些公共类中。
  • 我不喜欢静态的东西,它们不需要是静态的,但是如果你将代码包装在一个方法中并提供一个Runnable,你可以使代码更抽象。包含实际逻辑
猜你喜欢
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2022-11-19
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多