异常 - 如何更好地处理 java NullPointerException (一整套完整心法) ?
伊谢尔伦
伊谢尔伦 2017-04-18 10:34:35
0
2
463

2017/1/8

描述

可以说是「优雅地」处理, 总的来说要逻辑严谨, 即讲清楚 why

自己脑海有某些原则, 但是总不是不系统, 这令我不安.

上下文环境

  1. Java 8

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
刘奇

單說幾個用的比較多的或是比較官方的:

java8提供了optional類進行null pointer檢查,
Guava提供了Preconditions.checkNotNull進行檢查,
lombok提供NonNull註解

然而實際用起來,還是if(map!=null&&map.get("a")!=null)比較簡單,直觀,lombok用起來很優雅。
至於java8和guava的處理方式,就是見仁見智了。

Ty80

optional的意義在於透過型別系統告訴你應該要進行null檢查,但不是optional的變數你就不需要要進行檢查了?不行,你還是要檢查。所以optional的使用很尷尬,除非是新的程式碼,不然很難一致處理。

optional參考自函數式語言裡的option/maybe,但是在函數式語言裡通常是沒有null的,看到option就檢測,沒有就不用檢查,處理是一致的。

最近的TypeScript支援strictNullCheck和union type。 null單獨成一個類型,結合union type,就可以在類型層面表示可null的類型(例如string | null),strictNullCheck要求所以可null的變數都要先檢查再使用。

Java裡可以註解標記NonNull,然後用工具偵測,效果是差不多的。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!