예외와 에러
- 예외: 잘못된 사용 또는 코딩으로 인한 오류
- 에러와 달리 예외 처리를 통해 계속 실행 상태를 유지할 수 있음
- 일반 예외(Exception): 컴파일러가 예외 처리 코드 여부를 검사하는 예외
- 실행 예외(Runtime Exception): 컴파일러가 예외 처리 코드 여부를 검사하지 않는 예외
출처, 이것이 자바다
예외 처리
- 예외 발생 시 프로그램의 갑작스러운 종료를 막고 정상 실행을 유지할 수 있게 처리하는 코드
- 예외 처리 코드는 try-catch-finally 블록으로 구성
- try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성
출처, 이것이 자바다
package ch11.sec02.exam01;
public class ExceptionHandlingExample1 {
public static void printLength(String data) {
int result = data.length();
System.out.println("문자 수 : " + result);
}
public static void main(String[] args) {
System.out.println("[프로그램 시작]\n");
printLength("ThisIsJava");
printLength(null);
System.out.println("[프로그램 종료]");
}
}
실행 결과
package ch11.sec02.exam01;
public class ExceptionHandlingExample2 {
public static void printLength(String data) {
try { //예외발생 가능한 곳
int result = data.length(); //java.lang.NullPointerException 예외발생
System.out.println("문자 수 : " + result);
}catch(NullPointerException e) { // try 구문에서 예외 발생시 동작형. 이때 예외 클래스는 예외 발생한 오류 데이터에 해당하는 예외 클래스이어야 한다.
System.out.println(e.getMessage());
}finally { //예외 발생과 상관없이 마지막으로 실행하는 문법
System.out.println("[마무리 실행]\n");
}
}
public static void main(String[] args) {
System.out.println("[프로그램 시작]\n");
printLength("ThisIsJava");
printLength(null);
System.out.println("[프로그램 종료]");
}
}
실행 결과
package ch11.sec02.exam02;
public class ExceptionHandlingExample {
public static void main(String[] args) {
// 1)예외전가 2)예외처리(try-catch구문)
try {
Class.forName("java.lang.String"); //예외 없음
System.out.println("java.lang.String 클래스가 존재합니다.");
} catch (ClassNotFoundException e) { //진행안됨.
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println();
try {
Class.forName("java.lang.String2"); //예외 발생
System.out.println("java.lang.String2 클래스가 존재합니다.");
} catch (ClassNotFoundException e) { //진행됨.
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
실행 결과
'객체 지향 프로그래밍 - 예외 처리' 카테고리의 다른 글
사용자 정의 예외 (0) | 2023.01.26 |
---|---|
예외 떠넘기기 (0) | 2023.01.26 |
예외 종류에 따른 처리 (0) | 2023.01.26 |