๐ ์ฑ ์ถ์ฒ
๋ฆฌํฉํ ๋ง(๋งํด ํ์ธ๋ฌ)
๐ try-catch์์ catch๋ฅผ ์ฌ๋ฌ ์ค ์ธ ๋ ์ฃผ์ํด์ผ ํ ์ฌํญ
์์๊ฐ ์ค์ํ๋ค! (๊ณ์ธต ๊ด๊ณ)
์ปดํ์ผ ์๋ฌ ๋ฐ์ - ์์๋ฅผ ๋ฐ๊ฟ์ผ ํจ
IllegalArgumentException์ RuntimeException์ ์์๋ฐ๊ณ ์๋ค.
๋ฐ๋ผ์ ์ ์ฝ๋์์ IllegalArgumentException์ ๋๋ฌํ ์์๋ค.
๋ฉํฐ ์บ์น์์๋ ์ปดํ์ผ ์๋ฌ ๋ฐ์ -> 9์ฃผ ์ฐจ ์คํฐ๋์ ์ ์ด๋์๋ค.
โ Quiz) ์๋ ์ฝ๋์์ ๋ฐ์ํ๋ ์์ธ๋?
1. NullPointerException โ - ์ด๋ป๊ฒ ๋์ง๋๋ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค
2. IllegalArgumentException
3. ๋ ๋ค ์๋๋ค.
public class Example {
public static void main(String[] args) {
try {
throw new NullPointerException();
} catch (NullPointerException | IllegalArgumentException e) {
e.printStackTrace();
}
}
}
CheckedException vs UnCheckedException
๋ฐํ์ ๊ณ์ด์ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ์ฝ๋๋ก ํ ์ ์๋ ๊ฒฝ์ฐ UnCheckedException
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ก ์ปจํธ๋กค ํ ์ ์๋ ๊ฒฝ์ฐ(์ฌ์๋, ์๋ก์ด ๊ฐ์ผ๋ก ์นํ ๋ฑ๋ฑ)๊ฐ ๊ฐ๋ฅํ๋ฉด CheckedException
์๋ฐ 8 ์ด์ ๋ ๊ฑฐ์ ์ฝ๋์์ try-catch-finally๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด try-with-resource๋ก ์ ํํ๋๋ก ํ์(๋ฌผ๋ก AutoCloseable๋ฅผ ๊ตฌํํ๊ณ ์๋ ํด๋์ค)
๋กฌ๋ณต์์ @cleanup์ด๋ผ๋ ์ด๋ ธํ ์ด์ ๋ ์๋ค.
โ Quiz) ์๋ ์ฝ๋์ ๋ฌธ์ ์ ์??? ( src๋ฅผ dest์ ๋ณต์ฌํ๋ ์ฝ๋)
๋ฌธ์ ์ : finally ๋ธ๋ญ ์์in.close();์์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ด์ out.close()์ ๋๋ฌํ์ง ์์ ์ ์์ด out์ด ๋ซํ์ง ์์ ์ ์๋ค.
๊ฐ์ 1) try๋ธ๋ก์์ in.close()์ ์์ธ ์ค IOException์ด ์๋ RuntimeException์ด ๋ฐ์ํ๋ฉด ๋ ๋ ๋ฒ์งธ try๋ธ๋ก์ out.close()์ ๋๋ฌํ์ง ๋ชปํ ์ ๋ ์๋ค.
๊ฐ์ 2 ) ์๋์ ๊ฐ์ด ๊ฐ์ ํ out๊น์ง close๊ฐ ๊ฐ๋ฅํ๋ค,, ํ์ง๋ง ์ฝ๋๊ฐ ๋๋ฌด ์ง์ ๋ถ...
๊ฐ์ 3) try-with-resources๋ก ๊น๋ํ๊ฒ ๊ฐ์ ๊ฐ๋ฅ
try-with-resources๋ฅผ ์ด๋ค๊ณ catch๋ธ๋ก์ ์ ์จ๋ ๋๋ ๊ฑด ์๋๋ค.
ํ์ง๋ง finally์์ close ํ๋ ์ฝ๋๋ ์ ์จ๋ ๋๋ค.
try-with-resource์ finally๋ ๊ฒฐํฉ์ด ๋ ๊น?
์์์ ๋ฐ๋ฉ ํ finally๊ฐ ์คํ๋๋ค.
์ปดํ์ผ ๋ .class๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ง์ง๋ง์ close ํด์ฃผ๋ ๋ถ๋ถ์ด ์๋ค.
CheckedException๊ณผ UncheckedException ๋น๊ตํ์์
ํธ๋์ญ์ ์ฒ๋ฆฌ rollback๊ด๋ จ ์๊ธฐ๋ JDBC,์คํ๋ง ์ ๋ต๊ณผ ๊ด๋ จ ์๋ค. (๋จ๋ํ๊ณ ๋ฐ๋ก ํ ์ญ์ ํ๋ค.)
์คํ๋ง์์ rollback์ ํ ๊ฑด์ง ๋ง ๊ฑด์ง์ ๋ํ ๊ธฐ๋ณธ ์ค์ ๊ณผ ๊ด๋ จ ์๋ค.
์ปค์คํ ์์ธ๋ฅผ ๋ง๋๋ ์ ๋ต
- ์ปค์คํ ์์ธ๋ฅผ ์ ๋ง๋ค๊ณ ๊ธฐ์กด์ ์๋ ๊ฒ์ ์ ํ์ฉํ๋ ๊ฒ์ด ์ต๊ณ ์ข์ ์ ํ์ด๋ค.
- ๋ฃจํธ cause๋ฅผ ๋ฐ๋์ ๋ด์์ ์ปค์คํ ์์ธ๋ฅผ ๋ง๋ค์ (๊ทผ๋ณธ์ ์ธ ์์ธ๊ณผ ํจ๊ป ๋ง๋ค์ด์ผ ๋๋ค)
์์ธ์ฒ๋ฆฌ ๋น์ฉ
์์ธ์ฒ๋ฆฌ๋ ๋น์ฉ์ด ๋น์ธ๋ค.
๋ก์ง์ผ๋ก ์์ธ์ฒ๋ฆฌํ ์ ์์ผ๋ฉด ์์ธ๋ฅผ ๋์ง๋ ์์ ์ ์์ ํ๋ ๊ฒ์ด ์ข๋ค.
๐ก finally์์ return์ ์ฌ์ฉํ๋ ๊ฒ์ ์ํฐ ํจํด์ด๋ค.
finally์ return์ด ์์ผ๋ฉด try์ ์๋ return์ด ์คํ๋์ง ์๋๋ค.
โ Q) ๊ณ์ throws๋ฅผ ํ๋ฉด main๊น์ง์์ ๊ฒฐ๊ตญ ๋ง์ง๋ง์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์?
๊ทธ๋ฅ ํด๋น ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๊ณผ์ ์๋ด
callable : ์ํด๋ ๋๋ค....
fork join poll : ์์ง ์ํด๋ ๋๋ค.....
Thread์ Runnable์ ๋ฌด์จ ๋ฉ์๋๊ฐ ์๋์ง
Thread์ ์ํ ๊ณต๋ถ
Thread ์ฐ์ ์์ ๊ณต๋ถ
Main Thread๊ฐ ๋ญ์ง
๋๊ธฐํ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง : Lock๊ฐ๋ , Lock ์ข ๋ฅ
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฐ๋ ํ ๋ 10์ฃผ์ฐจ ๊ณผ์ : ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.01.28 |
---|---|
8์ฃผ์ ๊ณผ์ : ์ธํฐํ์ด์ค(ํผ๋๋ฐฑ) (0) | 2021.01.28 |
์คํฐ๋ ํ ๋ 9์ฃผ์ฐจ ๊ณผ์ : ์์ธ ์ฒ๋ฆฌ (0) | 2021.01.16 |
8์ฃผ์ ๊ณผ์ : ์ธํฐํ์ด์ค (0) | 2021.01.09 |
7์ฃผ์ฐจ ๊ณผ์ : ํจํค์ง (ํผ๋๋ฐฑ, feedback) (0) | 2021.01.02 |