๋ชฉ์ฐจ
NPE ๐
NPE(NullPointerException)๋ java ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์ ๋ง ๋ง์ด ๋ง๋๋ ์๋ฌ ์ค ํ๋์ด๊ณ
Null๊ฐ์ธ ๋์์ ๊ฐ์ง๊ณ ๋ญ๊ฐ ํ๋ ค๊ณ ํ๋ฉด ๋ฐ์ํ๋ ์๋ฌ๋ค.
๋ฐฉ์ง๋ฒ์ ๊ณตํต๋ชจ๋์ ๋ง๋ค์ด ํญ์ null ์ฒดํฌ๋ฅผ ํ๊ฒ๋ ๊ฐ๋ฐํ๋๊ฒ ์ฝ์ง์ ์ค์ด๋ ๊ธธ์ผ ๋ฏ ์ถ๋ค.
์๋์ ๊ฐ์ ์ํฉ์์ NPE๊ฐ ๋ฐ์ํ๋ค.
userList์ ์๋ฌด๊ฒ๋ ํ ๋น๋์ง ์์ ์ํ์ธ๋ฐ ์ฌ์ด์ฆ๋ฅผ ์ธก์ ํ๋ ค๊ณ ํ๋ค๋?(๋ฏธ์น๊ฑด๊ฐ?)
List<UserDto> userList = null;
log.info("userList => {}", userList.size());
์คํ๋ง์ผ๋ก ๊ฐ๋ฐ ์ ๋ณดํต ๋ฐ์ดํฐ๋ฅผ list์ ๋ด์ ํ๋ฉด์ ๋ฟ๋ฆฌ๊ฑฐ๋ API ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ด๋ฆฌ๊ฑฐ๋ ํ ํ ๋ฐ
list๊ฐ null์ด๊ฑฐ๋ ๋น๊ฐ์ด ๋ด๊ธฐ๊ฑฐ๋ ์ฌ์ด์ฆ๊ฐ 0์ธ ๊ฒฝ์ฐ ๋ฑ๋ฑ ๋ค์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ NPE๊ฐ ๋ฐ์ํ ์ ์๋ค.
๊ณตํต ๋ชจ๋๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ ์๋ ์์ง๋ง ์ ์ฉํ ๋ฉ์๋๊ฐ ์ด๋ฏธ ์์๋ค.
org.springframework.util์ isEmpty()๋ฅผ ์ด์ฉํ๋ฉด ๋๊ณ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๋์ฒ๋ผ ์ฌ๋ฌ ์ํฉ์ ๋ค ์ฒดํฌํด ์ค๋ค.
parameter๊ฐ์ด null์ธ์ง, obj๊ฐ ์ด๋ค ํ์ ์ธ์ง ๋ถ๊ธฐ ํ ๊ธธ์ด๋ ๊ฐ์ด ๋น์๋์ง ์ฒดํฌํ๋ค.
์๋์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ฐ๋ฐ ํ๋ฉด์ ์ด๋ ๊ฒ NPE๊ฐ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ ๋ถ ๊ณตํต ๋ชจ๋์ ๊ฐ๋ฐํ๊ฑฐ๋ ์คํ์์ค์ ๋ฉ์๋๋ฅผ ์ด์ฉํ๊ฑฐ๋ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฏธ๋ฆฌ ์ฐจ๋จ์ ํด ๋๋๊ฒ ์ข๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณ์ ์์ฑ ์ null์ด ์๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ฅผ ํด ๋๋๊ฒ ์ข๋ค.
์ ๋ฆฌ ๐
1. null์ฒดํฌ๋ ๋ฏธ๋ฆฌ ๊ณตํต๋ชจ๋ ๊ฐ๋ฐ ํน์ ์คํ ์์ค์ ๋ฉ์๋ ์ด์ฉ
2. ๋ณ์ ์ ์ธ ์ null์ด ์๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ(์ด๊ฑด ํธ๋ถํธ๊ฐ ์์ ๋ฏ ํ๋ ์ํฉ์ ๋ง๊ฒ๋ ์ ์ ํ ์กฐํ)
์ 2๊ฐ์ง๋ฅผ ์๊ฐํ๋ฉฐ ๊ฐ๋ฐํ๋ ์ต๊ด์ ๊ธฐ๋ฅด์.(๋์๊ฒ ํ๋ ๋ง)
'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[thyemeleaf] select option๊ฐ list loop (0) | 2023.04.26 |
---|---|
INSERT/UPDATE template(feat. ์์ CONCATENATE) (0) | 2023.03.05 |
[spring] vo์ multipartFile ๋์์ ์๋ฒ๋ก ์ ์ก(feat.@RequestPart) (2) | 2023.02.08 |
[java] PKIX path building failed ํด๊ฒฐ๋ฐฉ๋ฒ(HTTPS ํต์ ์๋ฌ) (2) | 2023.02.01 |
[devTool] postman์ผ๋ก ํ์ผ ์ ์ก ํ ์คํธ (0) | 2023.01.30 |
๋๊ธ