[Java] μΌλ° μμΈμ μ€ν μμΈ
π μ°Έκ³ ν μ±
- κΈ°λ³Έμ μΈ κ°λ μ μ 리νκ³ μΆκ°μ μΌλ‘ κΆκΈν κ²λ€μ μ 리νμ΅λλ€ -
π₯ π₯ π₯
βοΈ μμΈ_ 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μ μμΉ«κ°μ μ μ₯νλ μ°Έμ‘° λ³μμ μ΄κΉκ°μΌλ‘λ§ μ¬μ©ν μ μμΌλ©°, νμ¬ κ°λ¦¬ν€κ³ μλ κ°μ²΄κ° μλ€λ κ²μ μλ―Ένλ€.