재밌고 어려운 IT를 이해해보자~!
예외처리 본문
에러상황을 무시하고싶을떄나, 적절히 처리하고싶을때, 프로글매이 강제종료 되지 않게 하기위해서
예외처리를 쓰고는 한다.
예외처리를 사용하면 보다 안전하고 유연한 프로그램을 만들 수 있다.
예외처리는 try..catch 구문으로 사용한다!
try {
<수행할 문장 1>;
<수행할 문장 2>;
...
} catch(예외1) {
<수행할 문장 A>;
...
} catch(예외2) {
<수행할 문장 a>;
...
}
try안쪽에서 에러가 발생하면 catch문이 실행이된다.
예를들어
public class Sample {
public void shouldBeRun() {
System.out.println("ok thanks.");
}
public static void main(String[] args) {
Sample sample = new Sample();
int c;
try {
c = 4 / 0;
sample.shouldBeRun(); // 이 코드는 실행되지 않는다.
} catch (ArithmeticException e) {
c = -1;
}
}
}
처럼 int형 변수를 0으로 나누면 그곳에서 에러가 나 끝나지만 예외처리를 하면 그곳에서 끝나고
catch 구문으로 넘어가기 때문에, sample.shouldBeRun(); 은실행되지 않는다.
꼭 sample shouldBeRun(); 을 실행해야 한다면 finally를 사용해 가장 아래쪽에 작성한다.
finally문은 예외 발생 여부 상관없이 무조건 실행한다.
모든 에러에 대한 똑같은 예외처리 하는법 Exception
예외처리의 끝판왕 exception은 가장 밑에 있어야한다.
try catch는 close기능은 없고 문장의 맞침표 기능만 있다. '
ex)
catch (Exception e) { //키입력 잘못했을떄 ..
System.out.println("키 입력이 잘못되었습니다.");
throw와 throws!
throw의 경우 개발자가 의도적으로 예외를 발생시키는 것
throw라는 키워드를 이용하며, 주로 비즈니스 로직을 구현하는 과정 중 컴파일에는 문제가 없지만 해당 비지니스 로직이 개발자가 의도한 대로 통과하지 못했을 경우 고의로 예외를 발생시켜야 할 때 사용
thorw를 사용하는 이유는 예외가 발생할 수 있는 코드가 있다는 것을 인지시키고 예외처리를 강요.
throws의 경우 메서드 내에서 예외처리를 하지 않고 해당 메서드를 사용한 곳에서 예외 처리를 하도록 예외를 위로 던지는 것입니다. 예외를 전가하는 것
예외처리를 메서드가 아닌 다른곳에서 하며 예외형식을 미리 표기해준다.
ex)
package exam14.exam.excp;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ThrowableExam {
public static void checkYourSelf(Scanner scan) throws InputMismatchException {
System.out.println("1. 사람과 있는것이 좋다 / 2. 혼자 가 좋다");
System.out.println("선택 >>");
int check = scan.nextInt();
if(check ==1) {
System.out.println("당신은 외향적");
}else {
System.out.println("내향적");
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
try {
//ThrowableExam. Tr = new ThrowableExam();
System.out.println("===성격유형검사를시작합니다.==");
ThrowableExam.checkYourSelf(scan);
}catch (InputMismatchException e) {
System.out.println("키보드 입력이 잘못되었습니다.");
}finally {
if(scan != null) {
scan.close();
}
}
}
}
메서드에서 throws를 사용해 메인에서 try catch를 통해 예외처리.
Custom exception-
Exception을 상속받아서 자기만의 예외처리를 할 수 있다.보통 두개의 생성자를 선언해서 만든다.
1. 매게 변수가 없는 기본 생성자
2. 예외 발생 원인을 출력하는 String타입 매개변수를 갖는 생성자.
'교육전 개인공부' 카테고리의 다른 글
기본 API 클래스2 -java.lang 패키지 (0) | 2023.10.20 |
---|---|
기본 API 클래스 - API문서작성 (0) | 2023.10.19 |
익명클래스 (0) | 2023.10.18 |
내부클래스 (0) | 2023.10.17 |
추상화와 인터페이스 (2) | 2023.10.16 |