๋ชฉ์ฐจ
ํ๋ก๊ทธ๋จ์ ๋ ๊ฒฌ๊ณ ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ ๋จ์ํ ์์ธ๋ฅผ ์ก๋ ๊ฒ์ ๋์ด, ์์ธ๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๊ณ ์ค๊ณํ ์ค ์์์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ธ๋ฅผ ๋ค๋ฃจ๊ณ ์ํฉ์ ๋ง๋ ์ปค์คํ ์์ธ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ค๋ฌด์์ ๋งค์ฐ ์ค์ํ ๊ธฐ์ ์ ๋๋ค.
์ด๋ฒ ๊ธ์์๋ throw์ throws ํค์๋๋ฅผ ํตํ ์์ธ ์ ์ด ๋ฐฉ๋ฒ๊ณผ ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค ์์ฑ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ท throw์ throws ํค์๋
throw๋?
throw๋ ์์ธ ๊ฐ์ฒด๋ฅผ ๋ช ์์ ์ผ๋ก ๋ฐ์์ํค๋ ํค์๋์ ๋๋ค.
ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์์ ๋ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ค๋จํ๊ณ ์์ธ ์ฒ๋ฆฌ ๋ก์ง์ผ๋ก ์ ์ด๋ฅผ ๋๊ธฐ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
public class ThrowExample {
public static void main(String[] args) {
int age = -1;
if (age < 0) {
throw new IllegalArgumentException("๋์ด๋ ์์๊ฐ ๋ ์ ์์ต๋๋ค.");
}
}
}
๐ก ์์ธ ๊ฐ์ฒด๋ RuntimeException ๊ณ์ด์ด๊ฑฐ๋, ์๋๋ผ๋ฉด throws๋ก ์ ์ธํด์ค์ผ ํฉ๋๋ค.
throws๋?
throws๋ ๋ฉ์๋ ์ ์ธ๋ถ์ ์ฌ์ฉ๋๋ฉฐ, ํด๋น ๋ฉ์๋๊ฐ ํน์ ์์ธ๋ฅผ ๋ฐ์์ํฌ ์ ์์์ ์๋ ค์ฃผ๋ ์ ์ธ์ ๋๋ค.
์ง์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๊ณ ํธ์ถํ ์ชฝ์์ ์ฒ๋ฆฌํ๋๋ก ๋ ๋๊ธธ ์ ์์ด์.
public void readFile() throws IOException {
FileReader fr = new FileReader("data.txt");
}
์์ธ๋ฅผ ์์ํ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ชฝ์์๋ ๋ฐ๋์ try-catch ๋๋ ๋ค์ throws๋ก ์์ธ๋ฅผ ๋๊ฒจ์ผ ํฉ๋๋ค.
throws๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค
- ๋ฉ์๋๊ฐ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ ๊ถํ์ด ๋ถ์กฑํ ๋
- ์์ธ ์ฒ๋ฆฌ ์ฑ ์์ ํธ์ถ์์๊ฒ ์์ํ๊ณ ์ถ์ ๋
- ์ฌ๋ฌ ๋ฉ์๋ ํธ์ถ์ ํตํฉํ์ฌ ํ ๊ณณ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋
throw vs throws ์ ๋ฆฌ
ํญ๋ชฉ | throw | throws |
์๋ฏธ | ์์ธ๋ฅผ ์ค์ ๋ก ๋ฐ์์ํด | ์์ธ๊ฐ ๋ฐ์ํ ์ ์์์ ์ ์ธ |
์์น | ๋ฉ์๋ ๋ด๋ถ | ๋ฉ์๋ ์ ์ธ๋ถ |
๋์ | ์์ธ ๊ฐ์ฒด 1๊ฐ๋ง ๊ฐ๋ฅ | ์์ธ ํด๋์ค ์ฌ๋ฌ ๊ฐ ์ ์ธ ๊ฐ๋ฅ |
์ฌ์ฉ ์ | throw new IllegalArgumentException() | public void method() throws IOException |
๐ก throws๋ ๋ฉ์๋ ์๊ทธ๋์ฒ์ ์ผ๋ถ๋ก, ํด๋น ๋ฉ์๋๊ฐ ์ด๋ค ์์ธ๋ฅผ ๋ฐ์์ํฌ ์ ์๋์ง ์๋ ค์ค๋๋ค.
๋ฐ๋ฉด throw๋ ์ค์ ๋ก ์์ธ๋ฅผ ๋ฐ์์ํค๋ ์คํ๋ฌธ์ ๋๋ค.
๐ค ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค
์ ์ฌ์ฉ์ ์์ธ๊ฐ ํ์ํ๊ฐ?
๊ธฐ๋ณธ ์ ๊ณต ์์ธ ํด๋์ค๋ง์ผ๋ก๋ ๋ชจ๋ ์ํฉ์ ์ค๋ช ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋น์ฆ๋์ค ๋ก์ง์ ๋ง๋ ๋ช ํํ ์์ธ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ์ฝ๋๊ฐ ๋ ๋ช ํํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ฌ์์ ธ์.
์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธ ์ ์๋ชป๋ ๋น๋ฐ๋ฒํธ๋ ์ค๋ณต ์์ด๋ ๊ฐ์ ์ํฉ์ ์ฐ๋ฆฌ ์์คํ ๋ง์ ์์ธ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ ์ง์ ์์ธ ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ์ฉ์ ์์ธ ๋ง๋ค๊ธฐ – extends Exception or RuntimeException
Java์์๋ ์์ธ ํด๋์ค๋ ๋ฐ๋์ Exception ๋๋ RuntimeException์ ์์ํด์ผ ํฉ๋๋ค.
Checked ์ฌ์ฉ์ ์ ์ ์์ธ (Exception ์์)
public class LoginFailException extends Exception {
public LoginFailException(String message) {
super(message);
}
}
- ํธ์ถ์๊ฐ ์์ธ ์ํฉ์์ ๋ณต๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ
- ์์ธ ์ฒ๋ฆฌ๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ค์ํ ๋ถ๋ถ์ธ ๊ฒฝ์ฐ
- API ์ฌ์ฉ์์๊ฒ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
Unchecked ์ฌ์ฉ์ ์ ์ ์์ธ (RuntimeException ์์)
public class InvalidAgeException extends RuntimeException {
public InvalidAgeException(String message) {
super(message);
}
}
- ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ์ ํด๋นํ๋ ๊ฒฝ์ฐ
- ์์ธ ๋ฐ์ ์ ๋ณต๊ตฌ๊ฐ ์ด๋ ค์ด ๊ฒฝ์ฐ
- ์์ธ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ๋ฆฌ์ง ์๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ์ฝ๋ ๊ฐ๊ฒฐ์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ
๐ก ์ต๊ทผ Java ๊ฐ๋ฐ ํธ๋ ๋๋ Unchecked Exception์ ์ ํธํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
Spring Framework๋ ์ฃผ๋ก RuntimeException์ ์์ํ ์์ธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ ๋ง๋ฌด๋ฆฌ
์ด๋ฒ ๊ธ์์๋ Java์์ ์์ธ๋ฅผ ์ง์ ๋ค๋ฃจ๊ณ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค.
throw์ throws ํค์๋์ ์ฐจ์ด์ ์ ์ดํดํ๊ณ , ์ํฉ์ ๋ง๋ ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค๋ฅผ ๋ง๋ค์ด ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค.
์์ธ๋ฅผ ์ง์ ์ค๊ณํ๊ณ ๋ฐ์์ํค๋ ๋ฅ๋ ฅ์ ๋ ์์ ํ๊ณ ๋ช ํํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํฐ ์ด์ ์ด ๋ฉ๋๋ค.
Java ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ํ์ฉํ๋ฉด ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ๋ขฐ์ฑ ์๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
์์ธ ์ฒ๋ฆฌ๋ ๋จ์ํ ์ค๋ฅ๋ฅผ ์ก๋ ๊ฒ์ด ์๋๋ผ, ํ๋ก๊ทธ๋จ ํ๋ฆ์ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๋ ๋๊ตฌ์ ๋๋ค.
๋ค์ ๊ธ์์๋ Java์ ์ฃผ์ ํด๋์ค ๋ค์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๊ถ๊ธํ ๋ด์ฉ์ด๋ ์ถ๊ฐ๋ก ์๊ณ ์ถ์ ๊ฐ๋ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์ ๐
'โจ๏ธ Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Wrapper ํด๋์ค - ๊ธฐ๋ณธํ์ ๊ฐ์ฒด์ฒ๋ผ! (0) | 2025.05.21 |
---|---|
[Java] String vs StringBuilder vs StringBuffer (0) | 2025.05.20 |
[Java] ์์ธ ์ฒ๋ฆฌ ์์ ์ ๋ณต โ : ๊ฐ๋ ๋ถํฐ try-catch๊น์ง (0) | 2025.05.16 |
[Java] ์ถ์ํ์ ๋คํ์ฑ์ผ๋ก ์ ์ฐํ ์ฝ๋ ์ค๊ณํ๊ธฐ (0) | 2025.05.13 |
[Java] ์์๊ณผ ๋ฉ์๋ ํ์ฅ์ผ๋ก ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ๋์ด๊ธฐ (0) | 2025.05.12 |