>  Q&A  >  본문

异常 - 如何更好地处理 java NullPointerException (一整套完整心法) ?

2017/1/8

描述

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

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

上下文环境

  1. Java 8

伊谢尔伦伊谢尔伦2711일 전421

모든 응답(2)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-18 10:36:35

    더 일반적으로 사용되거나 더 공식적인 몇 가지 사항을 언급해 보겠습니다.

    java8은 null 포인터 검사를 위한 선택적 클래스를 제공하고,
    Guava는 검사를 위해 Preconditions.checkNotNull을 제공하고,
    lombok은 NonNull 주석을 제공합니다

    그러나 실제 사용에서는 if(map!=null&&map.get("a")!=null)이 비교적 간단하고 직관적이며 lombok은 사용하기 매우 우아합니다.
    java8과 guava의 처리 방법은 의견의 문제입니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:36:35

    선택 사항의 의미는 유형 시스템에서 null 검사를 수행해야 한다고 알려주지만 선택 사항이 아닌 변수는 검사할 필요가 없다는 것입니다. 아니요, 아직 확인해야 합니다. 따라서 옵셔널의 사용이 어색하고, 새로운 코드가 아닌 이상 일관되게 처리하기 어렵습니다.

    옵션은 기능적 언어에서 옵션/아마도를 의미하지만, 기능적 언어에서는 일반적으로 옵션이 있으면 이를 감지합니다. 처리가 일관됩니다.

    최근 TypeScript는 strictNullCheck 및 공용체 유형을 지원합니다. Null은 별도의 유형이 됩니다. Union 유형과 결합하면 유형 수준에서 null 허용 유형을 나타낼 수 있습니다(예: string | null). strictNullCheck에서는 사용하기 전에 모든 null 허용 변수를 확인해야 합니다.

    Java에서 NonNull에 주석을 달고 표시한 다음 도구를 사용하여 이를 감지할 수 있으며 효과는 거의 동일합니다.

    회신하다
    0
  • 취소회신하다