【问题标题】:Idiom for converting false boolean return value into exception?将假布尔返回值转换为异常的成语?
【发布时间】:2014-12-08 13:22:30
【问题描述】:

有一些 Android API(如 File.setWriteable)返回一个表示成功或失败的布尔值,而不是抛出异常。假设周围的代码期望在失败时抛出异常,如果返回值为 false,将此类调用转换为抛出异常(以及哪个异常)的好习惯是什么?

问题的进一步扩展:如果我连续有多个这样的调用(即setWriteablesetReadable)——在抛出异常之前将它们与&& 链接在一起有什么优点或缺点,而不是而不是每个人都有一个throw new IOException() 行?

【问题讨论】:

  • 我不确定我是否应该提供一个(丑陋的)我所要求的示例......
  • 这不仅仅是调试,所以断言似乎不合适。
  • 你不能简单地使用 Assert 或者根据结果抛出自己的异常或者写一个非常简单的包装器吗?
  • 也许你可以环绕一个方面(AOP)?
  • Android 中是否默认提供方面?从我的谷歌搜索来看,它看起来不像......

标签: java android exception-handling return-value


【解决方案1】:

(IMO,直截了当,但我怀疑丑陋)方式如下所示:

if (!tmpDir.setWritable(true, false)) {
    throw new IOException();
}

我问这个问题是因为看起来可能有更清洁或更好的方法。

【讨论】:

  • 很难想象你还能想到什么。您应该使用消息构造 IOException。
  • 嗯,一件事就是不必在消息中复制方法名称。
  • 关于“不必复制方法名称”,我正在想象一些你可以使用反射来完成的非常令人发指的黑客攻击。
猜你喜欢
  • 2018-01-24
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多