最后使用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块是否总是运行?
“无法访问的代码”在这里是误导,它应该被称为“返回值总是被终止块覆盖”。