728x90
Exception(예외)는 우리가 프로그램에서 실행을 할 때 문법상으로는 문제가 없었는데, 실제로 수행을 해보니 발생하게 되는 상황으로 실행 중에 예외가 발생하게 되면 프로그램이 즉시 종료되게 된다.
예외처리의 목적으로는 프로그램이 즉시 종료되는 현상을 방어하는 것이 우선 사항이라 할 수 있다.
예외 발생시 Exception 문구를 확인하여 어떤 타입(클래스)의 예외인지 확인하고 설명을 참고하여, 원인을 파악하고
발생한 라인을 확인한다.
문법 작성 시 예외가 발생할만한 구간을 try {}로 설정하고 catch(예외 문구 + 식별자){} 구문안에 발생된 예외를 넣어주어
즉시 종료되는 현상을 방지할 수 있다.
예를 들어 int a = 10이라 할 때 syso(a/0);을 실행하려 하면 java.lang.ArithmeticException 예외가 발생하게 된다.
다음과 같은 상황일 때 아래와 같이 사용할 수 있다.
int a = 10;
try {
System.out.println(a/0);
}
catch(java.lang.ArithmeticException 식별자) {
System.out.println("정수는 0으로 나눌수 없습니다.");
}
또한 finally{}를 통하여 예외 발생 여부와 상관없이 수행되는 구간을 만들 수도 있고 printStackTrace() 메서드를 통하여
예외 문구를 출력하여 개발자에게는 어떤 에러가 발생하였는지 사용자에게는 어떻게 해야 하는지를 안내해줄 수도 있다.
Exception을 상속받는 나만의 예외 클래스
package class02;
import java.util.Scanner;
class MyException extends Exception{ // 나만의 예외 클래스
// 멤버변수 메세지 값을
// 반드시 설정해서 만들수있게
// -> 생성자: 멤버변수 값을 초기화할때
String message;
MyException(String message){
this.message=message;
}
public String getMessage() {
return this.message;
}
}
public class Test06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MyException me = new MyException("범위에 맞는 나이를 입력해주세요!");
// 생성자에 인풋값으로 출력시킬 메세지 입력
try {
System.out.print("나이입력: ");
int age=sc.nextInt();
if(age<0 || age>200) {
// 예외를 일부러 발생시켜야하는 상황
throw me; // 예외를 강제로 발생
}
}
catch(MyException e) { // 내가 설정한 예외 발생시 출력
System.out.println(e.getMessage());
}
finally {
System.out.println("예외와 상관없이 출력");
}
}
}
728x90
'Java > study' 카테고리의 다른 글
MVC(Model, View, Controller) 패턴 (0) | 2022.06.28 |
---|---|
파일입출력 (0) | 2022.06.27 |
컬렉션 프레임워크 - Map (0) | 2022.06.24 |
컬렉션 프레임워크 (0) | 2022.06.23 |
추상클래스와 인터페이스 (0) | 2022.06.22 |