๋ชฉ์ฐจ
์์ธ ๋?
ํ๋ก๊ทธ๋จ์ ์ ์์ ์ธ ํ๋ฆ์ ๋ฐฉํดํ๋ ๋ฌธ์ ์ํฉ (ํ๋ก๊ทธ๋จ ์ฝ๋์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ , ๋ ผ๋ฆฌ์ ์ค๋ฅ)
์๋ฌ๋ ๊ทธ๋ณด๋ค ๋ ์ฌ๊ฐํ ๋ฌธ์ (ํ๋ก๊ทธ๋จ ์ค๋จ ๋ฑ์ ์ฌ๊ฐํ ๋ฌธ์ , JVM / ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ)
์์ธ ์ข ๋ฅ
- ์ฒดํฌ ์์ธ : ์ปดํ์ผ ์์ ์์ ์์ธ ๊ฐ์ ์ฒ๋ฆฌ
- ์ธ์ฒดํฌ ์์ธ : ๋ฐํ์ ์์ ์์ ๋ฐ์ (์ปดํ์ผ ์ ์์ธ์ฒ๋ฆฌ ๊ฐ์ ๋์ง ์์)
์์ธ ๊ณ์ธต ๊ตฌ์กฐ
`Throwable` ํด๋์ค๋ ๋ชจ๋ ์์ธ์ ์ค๋ฅ์ ๋ถ๋ชจ ํด๋์ค
- `getMessage()`: ์์ธ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
- `printStackTrace()`: ์์ธ ๋ฐ์ ์ ์คํ ํธ๋ ์ด์ค๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- `getCause()`: ์์ธ์ ์์ธ(๋ค๋ฅธ ์์ธ)์ ๋ฐํํฉ๋๋ค.
๊ธฐ๋ณธ ์์ธ์ฒ๋ฆฌ (try-catch)
`try` ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋
`catch` ์์ธ ๋ฐ์์ ์ฒ๋ฆฌ
`finally` ๊ธฐ๋ณธ ์คํ ๋ธ๋ก (์์์ ๋ฆฌ ๋ฑ)
์์ธ ๋์ง๊ธฐ (throw , throws)
`throw` ์์ธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์
`throws` ๋ฉ์๋๊ฐ ์์ธ๋ฅผ ๋์ง ์ ์์์ ์ ์ธํ ๋ ์ฌ์ฉ
์ฌ์ฉ์ ์ ์ ์์ธ
package try_catch_ex;
import java.util.Scanner;
// ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค: InvalidAgeException
class InvalidAgeException extends Exception {
public InvalidAgeException(String message) {
super(message); // ๋ถ๋ชจ ์์ฑ์ ํธ์ถ
}
}
public class try_catch_ex2 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("๋์ด๋ฅผ ์
๋ ฅํ์ธ์: ");
int age = scanner.nextInt();
try {
validateAge(age);
System.out.println("์
๋ ฅํ ๋์ด๋: " + age);
} catch (InvalidAgeException e) {
System.out.println("์ค๋ฅ: " + e.getMessage());
} finally {
scanner.close();
System.out.println("ํ๋ก๊ทธ๋จ ์ข
๋ฃ.");
}
}
// ๋์ด ์ ํจ์ฑ ๊ฒ์ฌ ๋ฉ์๋
public static void validateAge(int age) throws InvalidAgeException {
if (age < 0 || age > 150) {
throw new InvalidAgeException("์๋ชป๋ ๋์ด์
๋๋ค. 0๊ณผ 150 ์ฌ์ด์ ๊ฐ์ ์
๋ ฅํ์ธ์.");
}
}
}