0.오류
오류는 주로 프로그램 외부에서 발생하는 심각한 문제로, 프로그램이 정상적으로 계속 실행될 수 없을 때 발생한다. 오류는 시스템 수준에서 발생하며, 개발자가 이를 처리할 수 없는 경우가 많다.
예를 들어, 메모리 부족이나 스택 오버플로우와 같은 상황이다.
이러한 오류는 대부분 프로그램의 비정상적인 종료를 초래한다.
1.예외
예외는 프로그램 실행 중에 발생할 수 있는 예상 가능한 문제를 나타낸다.
예외는 프로그램 내에서 발생하며, 적절하게 처리할 수 있는 경우가 많다.
예외는 주로 잘못된 사용자 입력, 파일을 찾을 수 없음, 네트워크 연결 실패 등의 상황에서 발생한다.
프로그래머는 예외를 잡아내고 처리하여 프로그램이 계속 실행될 수 있도록 할 수 있다.
JAVA에서 모든 예외클래스는 java.lang.Exception 클래스를 상속받는다
1-1.일반 예외
일반 예외는 컴파일 시점에 체크되며, 반드시 처리해야 하는 예외이다.
RuntimeException클래스를 제외한 하위클래스다.
try-catch 블록으로 처리하거나 메서드 선언부에 throws 키워드를 사용하여 던져야 한다.
1-2.실행 예외
실행 예외는 컴파일러가 체크하지 않으며, 런타임에 발생하는 예외이다.
RuntimeException 클래스를 상속받는다.
개발자가 반드시 처리하지 않아도 된다.
그러나 적절히 처리하지 않으면 프로그램이 예기치 않게 종료될 수 있다.
2.실행 예외
2-1.NullPointerException
객체 참조가 없는상태
package a17_Exception;
public class a17 {
public static void main(String[] args){
String data= null;
System.out.println(data.toString());
}
}
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toString()" because "data" is null
at a17_Exception.a17.main(a17.java:6)
2-2.ArrayIndexOutOfBoundsException
배열에서 인덱스 범위를 초과할때
package a17_Exception;
public class a17 {
public static void main(String[] args){
int[] a={1,2};
a[3]=0;
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 2
at a17_Exception.a17.main(a17.java:9)
2-3.NumberFormatException
숫자로 변환될수없는 문자를 숫자로 바꿀려할때
package a17_Exception;
public class a17 {
public static void main(String[] args){
String a="a11";
System.out.println(Integer.parseInt(a));
}
}
Exception in thread "main" java.lang.NumberFormatException: For input string: "a11"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:778)
at a17_Exception.a17.main(a17.java:12)
2-4.ClassCastException
상위 하위 클래스간 타입변환에서 발생하는 에러
package a17_Exception;
public class a17 {
public static void main(String[] args){
Parent parent = new Parent();
Child child = (Child) parent;
}
}
class Parent{}
class Child extends Parent{}
Exception in thread "main" java.lang.ClassCastException: class a17_Exception.Parent cannot be cast to class a17_Exception.Child (a17_Exception.Parent and a17_Exception.Child are in unnamed module of loader 'app')
at a17_Exception.a17.main(a17.java:15)
'Language > JAVA' 카테고리의 다른 글
[Java] 예외처리(Exception Handling) (0) | 2024.05.20 |
---|---|
[Java] 익명 객체(Anonymous Object) (0) | 2024.05.20 |
[Java] 중첩클래스 접근 제한 (0) | 2024.05.19 |