๐ ์ฐธ๊ณ ํ ์ฑ
- ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ์ ๋ฆฌํ๊ณ ์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๊ฒ๋ค์ ์ ๋ฆฌํ์ต๋๋ค -
๐ฅ ๐ฅ ๐ฅ
โ๏ธ ์์ธ_ 457p
• ์์ธ
: ์ฐ์ฐ ์ค๋ฅ, ์ซ์ ํฌ๋งท ์ค๋ฅ ๋ฑ๊ณผ ๊ฐ์ด ์ํฉ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ํด๊ฒฐํ ์ ์๋ ์ค๋ฅ๋ฅผ ์๋ฏธํ๋ค.
• ์๋ฌ
: ์๋ฐ ๊ฐ์ ๋จธ์ ์์ฒด์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ก ๊ฐ๋ฐ์ ํด๊ฒฐํ ์ ์๋ ์ค๋ฅ๋ฅผ ์๋ฏธํ๋ค.
์์ธ๋ ๊ฐ๋ฐ์๊ฐ ํด๊ฒฐํ ์ ์๋ ์ค๋ฅ๋ฅผ ๋งํ๋ค๊ณ ํ๋๋ฐ, ์ด๋ ์ค๋ฅ๋ฅผ ์์ ํด์ ํด๊ฒฐํ๋ ๊ฒ์ด ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ฐจ์ ์ฑ ์ ์ ํํ๋ ๊ฒ์ ๋งํ๋ค.์๋ฌ๋ ์์ ์ฒ๋ฆฌ์์ฒด๋ฅผ ํ ์ ์๋ ์ค๋ฅ์ธ ๋ธ๋ฃจ์คํฌ๋ฆฐ ๊ฐ์ ๊ฒ์ ๋งํ๋ค.
์๋ฐ์์ ์์ธ์ ์ต์์ ํด๋์ค๋ Exception ํด๋์ค๊ณ , ์๋ฌ์ ์ต์์ ํด๋์ค๋ Error ํด๋์ค๋ค. ์ด ๋ ๊ฐ์ ํด๋์ค๋ Throwable ํด๋์ค๋ฅผ ์์ํ๋ค. ๋ฐ๋ผ์ ์๋ฌ์ ์์ธ ๋ชจ๋ Throwable ํด๋์ค์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ค.
โ๏ธ ์ผ๋ฐ ์์ธ_ 458p
• ์ผ๋ฐ ์์ธ
: ์ปดํ์ผ ์ ์ ์์ธ ๋ฐ์ ๋ฌธ๋ฒ์ ๊ฒ์ฌํ๋ฉฐ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ผ๋ฉด ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ปดํ์ผ์ด ๋ถ๊ฐํ๋ค.
• InterruptedException
: ์ผ์ ์๊ฐ ๋์ ํด๋น ์ฐ๋ ๋๋ฅผ ๋ฉ์ถ๊ฒ ๋ง๋ ๋ค.
Thread thread = new Thread(() -> {
try {
System.out.println("์์
์์: 5์ด ๋๊ธฐ ์ค");
Thread.sleep(5000); // 5์ด ๋๊ธฐ
System.out.println("์์
์๋ฃ");
} catch (InterruptedException e) {
System.out.println("์ค๋ ๋๊ฐ ์ธํฐ๋ฝํธ๋์์ต๋๋ค.");
}
});
์ฐ๋ ๋๋ ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ ์์ CPU๋ฅผ ์ฌ์ฉํ๋ ์ต์ ๋จ์๋ก, ํ๋ก์ธ์ค ๋ด์ ์กด์ฌํ๋ค. ์ฆ, ์ผ๋ฐ์ ์ผ๋ก ์๋ฐ ํ๋ก๊ทธ๋จ์ ์ปค๋ค๋ ํ๋์ ์์ ์ ์์ ์์ ๋ค๋ก ๋๋์ด ๊ฐ๊ฐ ์ฐ๋ ๋์ ํ ๋นํ ํ ์คํ๋๋ค. ๋์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ์คํ๋๋ ์ ์ฒด ์์ ์ ๋นจ๋ฆฌ ๋๋ผ ์ ์๋๋ก ํด์ค๋ค.
์ฌ์ฉ์๊ฐ ์ ์ฒด ์์ ์ ์ทจ์ํ์ฌ ์ข ๋ฃํด์ผํ ๊ฒฝ์ฐ, ์ฐ๋ ๋๊ฐ ์ข ๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์๋ ์์ ์ด ๋์ด์ ํ์ํ์ง ์์ผ๋ ์คํ์ ๊ทธ๋ง๋๊ณ ๋ฆฌ์์ค๋ค์ ์ ๋ฆฌํ ํ ์ข ๋ฃํ๋๋ก ์๋ฆฐ๋ค. ์ด๋ ์ธํฐ๋ฝํธ๊ฐ ์ฌ์ฉ๋๋ค.
์ด๋ ๋ง์ฝ ์ฐ๋ ๋๊ฐ ์ด๋๊ฐ์ ๋ธ๋กํน ๋์ด์๋ค๋ฉด ์ธํฐ๋ฝํธ๋ฅผ ์ฒดํฌํ๊ณ ์ข ๋ฃ ๋ก์ง์ ๋ฃ์ด๋จ์ด๋ ์ธํฐ๋ฝํธ ๋ก์ง ์คํ์ ์์ํ ์คํ๋์ง ์์ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ sleep์์ ๋ฒ์ด๋ ์ธํฐ๋ฝํธ ๋ก์ง์ด ์คํ๋ ์ ์๋๋ก ํด์ผํ๋๋ฐ Interrupted Exception์ try-catch๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฉ์๋ ์๊ทธ๋์ฒ์ ๋ช ์ํด์ ๋ฉ์๋ ํธ์ถ์์๊ฒ ์ฒ๋ฆฌ๋ฅผ ์์ํด์ผํ๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ Interrupted Exception์ ๋ฐ๋์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํด์ผํ๋ค๋ ๊ฒ์ด๋ค. ๋ง์ฝ Interrupted Exception์ ๋ฌด์ํ๋ ์ฝ๋๊ฐ ์ฌ๊ธฐ์ ๊ธฐ ๋จ๋ฐํ๋ค๋ฉด ์คํ์ด ์ข ๋ฃ๋์ง ์๊ณ kill-9๋ก ๊ฐ์ ์ข ๋ฃํด์ผํ๋ค.
[Java] InterruptedException์ด๋?
์๋ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ฐ์ฅ ๋ง์ด ๊ณ ๋ ค๋์ด์ผ ํ๋ ์์ธ ์ค ํ๋๊ฐ InterruptedException์ด๋ค. ์ค๋ ๋์ ์คํ์ ์ ๊น ๋์ ๋ฉ์ถ๊ธฐ ์ํด ์ฌ์ฉํ๋ sleep ์ฝ๋๋ฅผ ์ดํด๋ณด์ try { Thread.sleep(1000); } catch (Inter
hbase.tistory.com
• ClassNotFoundException
: JVM์ด ํด๋์ค ์ด๋ฆ์ ๋ฌธ์์ด๋ก ๋ฐ์์ ๋ก๋ฉํ๋ ค๊ณ ํ ๋, ํด๋น ํด๋์ค๊ฐ ์กด์ฌํ์ง ์์ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
public class ClassNotFoundExample {
public static void main(String[] args) {
try {
Class.forName("com.example.NotExistClass");
} catch (ClassNotFoundException e) {
System.out.println("ํด๋์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค: " + e.getMessage());
}
}
}
Class.forName("ํด๋์ค๋ช ")์ ์ฌ์ฉํ ๋ ์ฃผ๋ก ๋ฐ์ํ๋ ์์ธ๋ค. ClassNotFoundException๋ checked Exception์ด๋ผ ๋ฐ๋์ try-catch๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค.
• IOException
: ์๋ฐ ์ ์ถ๋ ฅ์์ ์ฃผ๋ก ๋ณด์ด๋ ์ผ๋ฐ ์์ธ๋ก, ์ฝ์์ด๋ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ ๋ ๋ฐ์ํ๋ค.
try {
BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
String line = reader.readLine();
System.out.println("ํ์ผ ๋ด์ฉ: " + line);
reader.close();
} catch (IOException e) {
System.out.println("ํ์ผ์ ์ฝ๋ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: " + e.getMessage());
}
FileReader์ BufferedReader๋ฅผ ์ด์ฉํ์ฌ test.txt ํ์ผ์ ์ฒซ ์ค์ ์ฝ๋๋ค. ํ์ผ์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ์ฝ๋ ์ค ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด
IOException์ด ๋ฐ์ํ๋ค. ์ ๋๋ก ์คํ์ ํ๊ณ ์ ์ํ๋ค๋ฉด ๊ฐ์ ํด๋์ test.txt ํ์ผ์ด ์ ๋๋ก ์กด์ฌํ๋์ง ํ์ธ์ ํด์ผํ๋ค.
• FileNotFoundException
: IOException์ ํ์ ํด๋์ค์ด๋ฉฐ, ํ์ผ์ ์ฝ์ ๋ ํด๋น ๊ฒฝ๋ก์ ํ์ผ์ด ์๊ฑฐ๋ ์ฐ๊ธฐ ๊ถํ์ด ์๋ ํ์ผ์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค.
try {
FileInputStream fis = new FileInputStream("test.txt");
} catch (FileNotFoundException e) {
System.out.println("ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค: " + e.getMessage());
}
test.txt ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
• CloneNotSupportedException
: Cloneable ์ธํฐํ์ด์ค๋ฅผ ์์ํ์ง ์์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ธฐ ์ํด clone( ) ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ์ํ๋ค.
class Person implements Cloneable {
String name;
Person(String name) {
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class CloneExample {
public static void main(String[] args) {
Person person1 = new Person("Alice");
try {
Person person2 = (Person) person1.clone();
System.out.println("๋ณต์ ์ฑ๊ณต");
} catch (CloneNotSupportedException e) {
System.out.println("๋ณต์ ํ ์ ์์ต๋๋ค: " + e.getMessage());
}
}
}
Object ํด๋์ค์ ๋ฉ์๋ ์ค clone( )์ ์์ ์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ํด๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋ฆฌํดํ๋ ๋ฉ์๋๋ก ๋ฐ๋์ Cloneable ์ธํฐํ์ด์ค๋ฅผ ์์ํด์ผํ๋ค.
clone ๋ฉ์๋๋ Java์ ์ต์์ ํด๋์ค์ธ java.lang.Object ํด๋์ค์์ ์ ์๋ ๋ฉ์๋๋ก ๊ทธ ์์ protected๋ก ์ ์๋์ด ์๋ค. ํ์ ํด๋์ค์์ super.clone( )์ ํธ์ถํด์ผ ๋ณต์ ๋๋ค. ๋ง์ฝ clone ๋ฉ์๋๋ฅผ ์ธ๋ถ์์ ์ฌ์ฉํ๋ ค๋ฉด protected -> public์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉํด์ผ ํ๋ค.
โ๏ธ ์คํ ์์ธ_ 463p
• ์คํ ์์ธ
: ์ปดํ์ผ ์ ์ด ์๋ ์คํํ ๋ ๋ฐ์ํ๋ ์์ธ๋ก, ์์ธ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํ์ง ์๋๋ผ๋ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ์ข ๋ฃ๋๋ค.
• ArithmeticException
: ์ฐ์ฐ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ ๋ ๋ฐ์ํ๋ค.
try {
int a = 10;
int b = 0;
int result = a / b;
System.out.println("๊ฒฐ๊ณผ: " + result);
} catch (ArithmeticException e) {
System.out.println("์ฐ์ ์ค๋ฅ ๋ฐ์: " + e.getMessage());
}
์์ ์ฝ๋๋ ๋ถ๋ชจ๊ฐ 0์ธ ๊ฒฝ์ฐ๋ก ์ฐ์ฐ์ด ๋ถ๊ฐํ์ฌ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ด๋ค. ๋ง์ฝ ์ด๋ ๊ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด result ๊ฐ์ด -1 ํน์ 1000 ๋ฑ์ ๊ฐ์ ๋ฃ์ ์ฝ๋๋ฅผ try-catch๋ก ๊ฐ์ธ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์ง ์๋๋ก ๋ง์ผ๋ฉด์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ณด๊ณ ์ฐ์ฐ ์ฝ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ๋ฐ๊ฒฌํ๋ค.
• ClassCastException
: ์์ ๊ด๊ณ์ ์๋ ํด๋์ค ๊ฐ์ ๋ค์ด ์บ์คํ ์ด ๋ถ๊ฐ๋ฅํ ๋, ๋ค์ด์บ์คํ ์ ์๋ํ๋ฉด ๋ฐ์ํ๊ฑฐ๋ ์๋ชป๋ ํ๋ณํ์ ํ๋ฉด ๋ฐ์ํ๋ค.
Object obj = "๋๋ ๋ฌธ์์ด์
๋๋ค"; // String ๊ฐ์ฒด
try {
Integer num = (Integer) obj; // ์๋ชป๋ ํ๋ณํ
} catch (ClassCastException e) {
System.out.println("ํ๋ณํ ์ค๋ฅ ๋ฐ์: " + e.getMessage());
}
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
public class CastExample {
public static void main(String[] args) {
Animal animal = new Cat(); // ์ค์ ๊ฐ์ฒด๋ Cat
try {
Dog dog = (Dog) animal; // ์๋ชป๋ ๋ค์ด์บ์คํ
} catch (ClassCastException e) {
System.out.println("ํ๋ณํ ์ค๋ฅ: " + e.getMessage());
}
}
}
• ArrayIndexOutOfBoundException
: ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์๋ชป ์ฌ์ฉํ์ ๋ ๋ฐ์ํ๋ค.
int[] numbers = {10, 20, 30};
try {
System.out.println(numbers[3]); // ์ธ๋ฑ์ค 3์ ์กด์ฌํ์ง ์์
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("๋ฐฐ์ด ์ธ๋ฑ์ค ์ค๋ฅ ๋ฐ์: " + e.getMessage());
}
• NumberFormatException
: ๋ฌธ์์ด์ ์ซ์ ๋๋ ์ค์๋ก ๋ณํํ ๋ ๋ฌธ์์ด์ด ๋ณํํ๊ณ ์ ํ๋ ์ซ์ ํ์์ด ์๋๋ฉด ๋ณํ์ด ์คํจํ๋๋ฐ ์ด๋ ๋ฐ์ํ๋ค.
String input = "123ABC"; // ์ซ์๊ฐ ์๋ ๋ฌธ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด
try {
int number = Integer.parseInt(input); // ์์ธ ๋ฐ์
System.out.println("๋ณํ๋ ์ซ์: " + number);
} catch (NumberFormatException e) {
System.out.println("์ซ์ ํ์ ์ค๋ฅ: " + e.getMessage());
}
• NullPointerException
: ์ฐธ์กฐ ๋ณ์๊ฐ ์ค์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ง ์์ ์ํฉ์์ ํ๋๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ฐ์ํ๋ค.
String text = null; // ๋ฌธ์์ด ๋ณ์์ null ํ ๋น
try {
System.out.println("๋ฌธ์์ด ๊ธธ์ด: " + text.length()); // ์์ธ ๋ฐ์
} catch (NullPointerException e) {
System.out.println("๋ ํฌ์ธํฐ ์์ธ ๋ฐ์: " + e.getMessage());
}
์์ ์ฝ๋์์ text๋ null ๊ฐ์ด๋ค. null์ ์์นซ๊ฐ์ ์ ์ฅํ๋ ์ฐธ์กฐ ๋ณ์์ ์ด๊น๊ฐ์ผ๋ก๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํ์ฌ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
'๐ Java > ์๋ฐ์์ ์ ๋ณต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ต๋ช ์ด๋ ํด๋์ค (1) | 2025.05.02 |
---|---|
[Java] ์ด๋ ํด๋์ค (0) | 2025.04.29 |
[Java] ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค (1) | 2025.04.28 |
[Java] final, static, abstract ์ ์ด์ (2) | 2025.02.05 |
[Java] ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ, super( ) ๋ฉ์๋ (1) | 2025.02.02 |