개발 과정(체인) 코드가 NPE를 처리하는 몇 가지 방식과 우아한 해결 방안.

1379 단어 NPE체인개발하다
실제 개발 과정에서 일부 코드 논리는 테이블 클래스(데이터베이스의 테이블을 통해 구축된 클래스) 간의 관계를 통해 실현되어야 한다.예를 들어 간단한 수요는 고객의 소속 시장의 이름을 찾는 것이다. 나의 기존 회사 업무에서의 코드 논리는 다음과 같다.
String mpName=member.getStore().getMarketplace.getName();

xx시장인지 아닌지를 판단하려면 테이블 디자인 초기에 또는 표준에 맞지 않는 데이터를 추가하면 이 줄 코드를 실행할 때 NPE에 보고한다.그러면 우리는 어떻게 유일한 관계에서 코드를 바꾸거나 최적화할 수 있습니까? 즉, 표 데이터를 바꾸지 않는 상황에서 이에 대한 최적화 방식은 어떤 것들이 있습니까?
전통적인null판단
if(member.getStore()==null){
   ...
   if(store.getMarketplace==null){
      ...
      if(marketplace.getName()==null){
         ...
   
      }
   }
}

2. 이상 포획
String mpName="";
try{
  mpName=member.getStore().getMarketplace.getName();
}catch(Exception e){
  mpName="unknow"
}

3. jdk8의 도구 클래스 Optional
String mpname=Optional.ofNullable(member)
              .map(m->m.getStore())
              .map(s->s.getMarketplace())
              .map(p->p.getName())
              .orElse("unknow");
            //.ifPresent(m->m.setName("nuknow"));

orElse와 ifPresent의 차이점은 다음과 같습니다.
orElse:null이 있으면 실행
ifPresent: 모두null로 실행
4. 제한된 StringUtils 3자 도구
이 일반 처리 요청 매개 변수는lang3을 사용하는데 개발 과정에서 자주 사용하면 더 이상 말하지 않겠습니다.
 
개인적으로 공식적으로 내놓은 도구는 과정이 너무 길어서 체인식으로 체인식을 해결하는 것이 비교적 번거롭다. 간단하게 말하자면try로...catch..일반적인 체인 논리 코드를 완성합니다.

좋은 웹페이지 즐겨찾기