μΆμ²
ChatGPT
μλ°(Java)μμλ νλ‘κ·Έλ¨ μ€ν μ€ λ°μνλ λΉμ μμ μΈ μν©μ μ²λ¦¬νκΈ° μν΄ μμΈ(Exception)μ μλ¬(Error)λ₯Ό μ¬μ©νλ€. μ΄ λμ λͺ¨λ `Throwable` ν΄λμ€λ₯Ό μμλ°μ μμ ν΄λμ€μ΄μ§λ§, κ·Έ λͺ©μ κ³Ό μ¬μ© λ°©μμμ μ€μν μ°¨μ΄μ μ΄ μλ€.
1. μμΈ(Exception)μ μλ¬(Error)μ κΈ°λ³Έ κ°λ
μμΈ Exception
νλ‘κ·Έλ¨ μ€ν μ€μ λ°μν μ μλ μκΈ°μΉ μμ μν©μ μλ―Ένλ€. μ΄λ¬ν μν©μ μ£Όλ‘ νλ‘κ·Έλ¨μ λ
Όλ¦¬μ μΈ μ€λ₯λ μλͺ»λ μ¬μ©μ μ
λ ₯, λ€νΈμν¬ λ¬Έμ λ± λΉκ΅μ μμΈ‘ κ°λ₯ν λ¬Έμ λ€μ΄λ€. μμΈλ κ°λ°μκ° νλ‘κ·Έλ¨ λ΄μμ μ μ νκ² μ²λ¦¬ν μ μμΌλ©°, `Exception` ν΄λμ€μ μΈμ€ν΄μ€λ‘ ννλ©λλ€.
μλ¬ Error
μλ° νλ‘κ·Έλ¨μ΄ μ μμ μΌλ‘ μ€νλ μ μλ μ¬κ°ν λ¬Έμ λ₯Ό λνλΈλ€. μ΄λ¬ν λ¬Έμ λ μ£Όλ‘ JVMμ μμ λΆμ‘±, λ©λͺ¨λ¦¬ λΆμ‘±(OutOfMemoryError), μ€ν μ€λ²νλ‘(StackOverflowError) λ± μμ€ν
λ 벨μμ λ°μνλ λ¬Έμ λ€μ΄λ€. μλ¬λ μΌλ°μ μΌλ‘ νλ‘κ·Έλ¨μμ 볡ꡬν μ μλ μν©μ μλ―Ένλ©°, `Error` ν΄λμ€μ μΈμ€ν΄μ€λ‘ ννλλ€.
2. μμΈ(Exception)μ μλ¬(Error)μ μ°¨μ΄μ
νΉμ± | μμΈ Exception | μλ¬ Error |
κΈ°λ³Έ κ°λ | νλ‘κ·Έλ¨ λ΄μμ μμΈ‘ κ°λ₯ν λ¬Έμ μν© | JVMμμ λ°μνλ μ¬κ°ν μμ€ν λ 벨 λ¬Έμ |
μμ κ³μΈ΅ | java.lang.Exception | java.lang.Error |
볡ꡬ κ°λ₯μ± | λλΆλΆμ κ²½μ° νλ‘κ·Έλ¨ μ½λμμ 볡ꡬ κ°λ₯ | 볡ꡬ λΆκ°λ₯, νλ‘κ·Έλ¨ μ’ λ£κ° μΌλ°μ |
μμ | `IOException`, `SQLException`, `NullPointerException` | `OutOfMemoryError`, `StackOverflowError`, `VirtualMachineError` |
μ©λ | κ°λ°μκ° μ²λ¦¬νκ³ λ³΅κ΅¬ν μ μλ μ€λ₯ μ²λ¦¬ | μμ€ν λ 벨μ μ€λ₯λ‘, 볡ꡬλ₯Ό μλνμ§ μμ |
μ²λ¦¬ λ°©λ² | `try-catch` λΈλ‘μΌλ‘ μμΈλ₯Ό μ‘κ³ μ²λ¦¬ | μΌλ°μ μΌλ‘ μ²λ¦¬νμ§ μμ; μλ¬ λ°μ μ νλ‘κ·Έλ¨ μ’ λ£κ° λ°μν μ μμ |
3. μμΈμ μ’ λ₯
μλ°μμ μμΈλ ν¬κ² λ κ°μ§λ‘ λλλ€.
1) κ²μ¬λ μμΈ Checked Exception
μ»΄νμΌ μμ μ μ»΄νμΌλ¬κ° λ°λμ μ²λ¦¬ν΄μΌ νλ€κ³ μꡬνλ μμΈμ΄λ€. μ΄λ¬ν μμΈλ κ°λ°μκ° μμΈ‘ κ°λ₯νλ©°, μ μ νκ² μ²λ¦¬νμ¬ νλ‘κ·Έλ¨μ μμ μ±μ λμΌ μ μλ€. μΌλ°μ μΌλ‘ μΈλΆ νκ²½κ³Ό μνΈμμ©ν λ λ°μνλ€.
μμ
- `IOException`: νμΌ μ μΆλ ₯ μμ μ€ λ°μν μ μλ μμΈ
- `SQLException`: λ°μ΄ν°λ² μ΄μ€ μμ μ€ λ°μν μ μλ μμΈ
νΉμ§
- `try-catch` λΈλ‘μ΄λ `throws` ν€μλλ₯Ό ν΅ν΄ μμΈλ₯Ό λͺ μμ μΌλ‘ μ²λ¦¬ν΄μΌ νλ€.
- μμΈλ₯Ό μ²λ¦¬νμ§ μμΌλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€.
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
File file = new File("nonexistentfile.txt");
FileReader fr = new FileReader(file); // FileNotFoundException λ°μ κ°λ₯
} catch (IOException e) {
System.out.println("νμΌμ μ½λ λμ€ μ€λ₯κ° λ°μνμ΅λλ€: " + e.getMessage());
}
}
}
2) κ²μ¬λμ§ μμ μμΈ Unchecked Exception
λ°νμ μμ μ λ°μνλ μμΈλ‘, μ»΄νμΌλ¬κ° κ²μ¬νμ§ μλλ€. μ£Όλ‘ νλ‘κ·Έλλ° μ€λ₯(μ: μλͺ»λ λ‘μ§, μλͺ»λ API μ¬μ©)λ‘ μΈν΄ λ°μνλ©°, κ°λ°μκ° μ¬μ μ λ°©μ§νλ κ²μ΄ λ°λμ§νλ€.
μμ
- `NullPointerException`: κ°μ²΄κ° nullμΈ μνμμ λ©μλλ νλλ₯Ό μ κ·Όνλ €κ³ ν λ λ°μ
- `ArrayIndexOutOfBoundsException`: λ°°μ΄μ μ ν¨νμ§ μμ μΈλ±μ€μ μ κ·Όνλ €κ³ ν λ λ°μ
- `ArithmeticException`: 0μΌλ‘ λλκΈ°λ₯Ό μλν λ λ°μ
νΉμ§
- μ»΄νμΌλ¬κ° μμΈ μ²λ¦¬λ₯Ό κ°μ νμ§ μκΈ° λλ¬Έμ, `try-catch` λΈλ‘ μμ΄λ μ»΄νμΌμ΄ κ°λ₯νλ€.
- μμΈλ₯Ό μ²λ¦¬νμ§ μμΌλ©΄ νλ‘κ·Έλ¨μ΄ λΉμ μ μ’ λ£λ μ μλ€.
public class UncheckedExceptionExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers[3]); // ArrayIndexOutOfBoundsException λ°μ
}
}
4. μλ¬(Error)μ μ’
λ₯
μλ¬λ νλ‘κ·Έλ¨ μ½λμμ μ§μ μ²λ¦¬ν νμκ° μλ, λλ μ²λ¦¬ν μ μλ μ¬κ°ν λ¬Έμ λ₯Ό λνλΈλ€. μ£Όλ‘ JVMμ΄ λΉμ μμ μΈ μν©μ μ§λ©΄νμ λ λ°μνλ€.
μ£Όμ μλ¬ μμ
- `OutOfMemoryError`: ν λ©λͺ¨λ¦¬κ° λΆμ‘±ν λ λ°μνλ€. μλ₯Ό λ€μ΄, λλμ κ°μ²΄λ₯Ό μμ±νκ±°λ λ©λͺ¨λ¦¬ λμκ° λ°μνμ λ λ°μν μ μλ€.
- `StackOverflowError`: μ¬κ· νΈμΆμ΄ λ무 κΉμ΄μ Έμ μ€ν λ©λͺ¨λ¦¬κ° μ΄κ³Όλ λ λ°μνλ€.
- `VirtualMachineError`: JVMμ΄ μμλκ±°λ μ΄μ 체μ μμμ μ¬μ©ν μ μμ λ λ°μνλ€. μλ₯Ό λ€μ΄, `InternalError`, `UnknownError` λ±μ΄ μλ€.
μλ¬λ μΌλ°μ μΌλ‘ νλ‘κ·Έλ¨ λ΄μμ 볡ꡬν μ μμΌλ―λ‘, λ°μνλ©΄ νλ‘κ·Έλ¨μ μ’ λ£λλ€.
public class ErrorExample {
public static void main(String[] args) {
// 무ν μ¬κ· νΈμΆλ‘ μΈν΄ StackOverflowError λ°μ
causeStackOverflow();
}
public static void causeStackOverflow() {
causeStackOverflow(); // 무ν μ¬κ· νΈμΆ
}
}
5. κ²°λ‘
- μμΈ(Exception): νλ‘κ·Έλ¨μμ μμΈ‘ κ°λ₯ν μ€λ₯ μν©μ λνλ΄λ©°, 볡ꡬν μ μλ κ°λ₯μ±μ΄ μλ€. `Checked Exception`κ³Ό `Unchecked Exception`μΌλ‘ λλλ©°, κ°λ°μλ μ΄λ₯Ό μ μ ν μ²λ¦¬ν΄μΌ νλ€.
- μλ¬(Error): JVM λ 벨μμ λ°μνλ μ¬κ°ν λ¬Έμ λ‘, μΌλ°μ μΌλ‘ 볡ꡬν μ μλ€. νλ‘κ·Έλ¨ μ½λμμ μ²λ¦¬ν기보λ€λ μμ€ν
μ μμ μ±μ΄λ μμ λ¬Έμ λ‘ μΈν΄ λ°μνλ©°, νλ‘κ·Έλ¨ μ’
λ£λ₯Ό μΌκΈ°νλ€.
Javaμμ μμΈμ μλ¬μ ꡬλΆμ νλ‘κ·Έλ¨μ μμ μ±μ λμ΄κ³ μμΈ μν©μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ λ° μ€μνλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μμΈλ₯Ό μ μ ν μ²λ¦¬νκ³ , μμμΉ λͺ»ν μ€λ₯μ λλΉν μ μλ€.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] Tail Recursion Optimization λ체 λ°©λ² (0) | 2024.08.28 |
---|---|
[Java][JVM] StackOverflowErrorμ μμΈκ³Ό ν΄κ²° λ°©λ² (0) | 2024.08.27 |
[Java] μ λ€λ¦ (1) | 2024.08.27 |
[Java] λ³μ± Variance (0) | 2024.08.27 |
[Java] μ μ λ€λ¦μ μμ νμ μ μ¬μ©ν μ μλκ° (0) | 2024.08.27 |