【问题标题】:Kotlin checked exceptions alternativeKotlin 检查异常的替代方案
【发布时间】:2018-03-25 14:43:34
【问题描述】:

既然 Kotlin 不支持检查异常,那么如何让程序员意识到一个方法可能会抛出异常

简单示例:

class Calculator (value: Int = 0) {

    fun divide (dividend: BigDecimal, divider: BigDecimal) : BigDecimal {
        return dividend / divider
    }
}

显然,divide 方法可能会抛出java.lang.ArithmeticException: Division by zero 异常,并且库的创建者需要警告该类的用户将调用放在try-catch 子句中

Kotlin 中这种意识的机制是什么?

【问题讨论】:

  • ArithmeticException 不是已检查异常,因此即使在 JAVA 程序员中也不会被警告。您将不得不使用例如。 IOException
  • @Przemo 真的,是这样吗?谢谢你的信息

标签: java exception try-catch kotlin


【解决方案1】:

鉴于该语言没有明确的结构,唯一剩下的就是:隐式。

例如,通过放置 javadoc 清楚地告诉方法的用户什么/为什么可能会向他抛出异常。或者你使用@Throws注解。

也许,也许 kotlin 团队会在某个时候添加编译器警告来弥补这一点(请参阅here)。

【讨论】:

    【解决方案2】:

    您可以返回 Try 以便客户端可以调用 isSuccess 或 isFailure http://www.java-allandsundry.com/2017/12/kotlin-try-type-for-functional.html

    你也可以返回可为空的类型 BigDecimal?这样客户端就会知道该值可能不存在(除以零时,您可以返回 null)。

    【讨论】:

      猜你喜欢
      • 2013-09-28
      • 1970-01-01
      • 2021-07-31
      • 2016-06-25
      • 2012-09-22
      • 1970-01-01
      • 2019-03-31
      相关资源
      最近更新 更多