最后使用kumlin无法访问的代码和枚举

我遇到过这样的问题,android工作室警告我无法访问的代码。 我不明白,它是如何无法达到的。

我的原始代码:

try { return BasketProvider.valueOf(prefs.getString(KEY_BASKET_PROVIDER, null)) //unreachable code here } finally { return BasketProvider.LOCAL } 

如果我终于改变catch(e :IllegalArgumentException) ,没有任何警告。 如果我把它们全部结合起来,警告再次出现。

  try { return BasketProvider.valueOf(prefs.getString(KEY_BASKET_PROVIDER, null))//no warning } catch (e: IllegalArgumentException) { return BasketProvider.LOCAL } -------------------------------- try { return BasketProvider.valueOf(prefs.getString(KEY_BASKET_PROVIDER, null))//unreachable code } catch (e: IllegalArgumentException) { return BasketProvider.LOCAL //unreachable code } finally { return BasketProvider.LOCAL } 

这是一个Kotlin错误,还是我错过了什么?

编辑:

购物篮提供者是简单的枚举类:

 enum class BasketProvider { LOCAL, SHARED } 

finally总是执行(除非你调用了System.exit() ),所以你的finally块中的返回值总是会覆盖你的try / catch返回值。 另请参见: finally块是否总是运行?

“无法访问的代码”在这里是误导,它应该被称为“返回值总是被终止块覆盖”。

Interesting Posts