Salesforce/Apex Class

[Apex class] Error: Attempt to de-reference a null object 해결

RHBY 2022. 3. 30. 09:54

로그인 화면 접속 시 발생하는 문제
오류 로그 (LoginProc 클래스의 line 28에서 문제 발생)

미니 프로젝트를 개발하던 도중, 로그인 페이지에 접근할 때 '이메일 저장' 을 사용자가 이전에 체크했는 지 안했는 지 여부를 검사하는 과정에서 쿠키를 가져오는 부분이 문제가 생겼다. 쿠키는 생성되지 않은 값인 경우 가져올 수가 없다.

기존 접속자는 쿠키가 생성되어 있겠지만, 신규 접속자는 쿠키가 생성조차 되지 않아서 오류를 일으킨다.

 

ASP에서는 별도의 함수를 만들어 대처했지만, Apex Class에서는 삼항 연산을 사용해 처리한다.

 

메서드 체이닝 구간에 ? 키워드를 달아 삼항 연산

물음표 키워드를 부착하면, 해당 구간의 반환값이 없을 때 자동으로 Null을 반환한다고 한다. 이를 통해 우선 초기화가 가능하고, 추후 조건문을 통해 설정한 구간도 작동시킬 수 있다.

 

실행 결과, 오류 없이 정상적으로 출력되는 페이지를 확인

 

번외: 브라우저에서 발생한 오류를 IDE에서 확인하는 방법

세일즈포스 설정 > 디버그 로그를 찾아가면 사용자 추적 플래그를 만들 수 있다. 사용자 추적 플래그를 생성하면 시작 일자부터 만료 일자까지 실행되는 모든 프로세스에 대한 디버그 로그를 출력받을 수 있으며, 필요한 내용만을 선별해 로그를 확인할 수 있다.

제어할 수 있는 디버그 수준
디버그 생성

생성된 추적 플래그는 시작 일자부터 만료 일자까지 모두 진행되며, 진행 기간 내에는 모든 프로세스를 로그로 기록한다. IDE에서 해당 디버그 로그를 확인하려면 ctrl + shift + p를 눌러 SFDX:get Apex Debug Log를 클릭하자.

로그 목록에서 확인하고자 하는 실행 로그를 클릭
별다른 오류 없이 실행에 성공했음을 알 수 있다.