亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確處理NPE

如何正確處理NPE

慕后森 2023-06-08 20:16:57
我想正確處理 NPE 警告。例子:@NullableLiveData<User> currentUser;LiveData<List<Medication>> getUserMeds() {    return parent.getMedsForUser(this.currentUser.getValue().getId());}為方法顯示兩個 NPE 警告getValue()getId()我目前正在通過檢查非空值來確保我不會在函數外部弄亂,但我會覺得在函數內部實現它會更好。
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

在函數內部返回值之前執行檢查:

LiveData<List<Medication>> getUserMeds() {
    if (this.currentUser == null) return "Some default value or throw an Exception"
    return parent.getMedsForUser(this.currentUser.getValue().getId());
}


查看完整回答
反對 回復 2023-06-08
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

這完全取決于您要創建哪種邏輯。

解釋

您收到此警告的原因是,如果其中一個返回null,它會崩潰,因為您遇到類似 的情況null.method(),這顯然無法正常工作。


注釋

您可以使用您已經熟悉的注釋 (@Nullable@NotNull)。然后你的框架可以確保正確的屬性,你可以依賴它。


處理好自己

您還可以在您的方法中顯式處理大小寫,例如:

Value value = currentUser.getValue();

if (value == null) {

    // TODO Handle the case ...

}


Id id = value.getId();

if (id == null) {

    // TODO Handle the case ...

}


// They are now safe to use

筆記

但是,如果您無法真正處理這種情況,而只會因異常而崩潰,那么處理它并沒有真正的好處。

請注意,這this在您的代碼中已過時,因為您在字段和局部變量之間沒有名稱沖突。


查看完整回答
反對 回復 2023-06-08
  • 2 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號