2022. 1. 13. 21:35ㆍJAVA
사용자가 서비스를 이용하는데에 불편함을 주는 상황을 어떻게 해결해야하는지 분석할 수 있니? |
예외(Exception)란?
- 코드상으로는 문법 문제가 없으나, 실제 수행과정에서 발생하는 문제들!
- 프로그램 실행 중 발생하는 오류 중에서 처리가 가능한 것을 의미한다.
- 예외가 발생하면 프로그램은 즉시 종료된다. - 프로그램을 끝까지 사용할 수 없게 된다. |
예외처리란?
- 프로그램에 예외가 생겨 비정상 종료 (강제 종료)가 되지 않도록 사전에 예방하는 코드를 만드는 과정을 의미한다.
- 어떤 예외가 어떻게 발생할지 예상이 불가능하다 - If문 사용을 하지 못한다. - Try - catch - Finally 문 사용해서 해결해준다. |
< Try - Catch 문 >
만약에 Try에서 문제가 발생한다면, Catch로 이동해! |
try { 예외가 발생할 가능성이 있는 처리 } catch (예외형 변수명) { 예외가 발생했을 때 실행하는 처리 } |
- 정상 작동이 된다면 예외 발생하지 않기 때문에 Catch로 이동하지 않는다.
- Try에서 예외가 발생한다면 바로 Catch문으로 이동!
ex) Try - Catch 문 사용 전
num을 10이라 하였을 때 [10 / 사용자에게 입력받은 값으로 계산을 하는 과정이다
하지만 0을 입력하였을 때 예외가 발생하여 무한 루프임에도 불구하고 강제 종료되는 모습을 볼 수 있다!
ex) Try - Catch 문 사용 후
package day0112;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
int num=10;
while(true) {
Scanner sc= new Scanner(System.in);
System.out.println("번호 입력 : ");
try {
int i=sc.nextInt();
System.out.println(num/i);
}
catch(ArithmeticException e){
System.out.println("0은 계산이 불가능합니다");
}
}
}
}
- Try - Catch 문 사용하여 실행하였을 때에는 강제 종료되지 않고 Catch문으로 빠져 실행되는 것을 볼 수 있다
- 예외가 발생할 것 같은 부분을 Try{ }로 감 싸준 후
Catch ( ) 안에 발생한 예외부분 ArithmeticException e 넣어주고 예외처리할 멘트를 적어준다.
< Try - Catch - Finally문 >
예외가 발생하든 안하든 무조건 실행하는 명령 |
try { 예외가 발생할 가능성이 있는 처리 } catch (예외형 변수명) { 예외가 발생했을 때 실행하는 처리 } Finally{
예외가 발생하든 안하든 무조건 실행하는 명령; } |
ex)
package day0112;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
int num=10;
while(true) {
Scanner sc= new Scanner(System.in);
System.out.println("번호 입력 : ");
try {
int i=sc.nextInt();
System.out.println(num/i);
}
catch(ArithmeticException e){
System.out.println("0은 계산이 불가능합니다");
}
finally {
System.out.println("무조건 실행되는 문장");
}
}
}
}
- Finally를 사용하여 무조건 실행되는 문장을 출력해보았다.
그 결과 i가 0이라 예외 처리한 문장과 같이 나오는 것을 볼 수 있다!
'JAVA' 카테고리의 다른 글
[ JAVA ] 예외와 예외처리 ( 3 ) (0) | 2022.01.15 |
---|---|
[ JAVA ] 예외와 예외처리 ( 2 ) (0) | 2022.01.15 |
[ JAVA ] 형변환 (0) | 2022.01.12 |
[ JAVA ] 메서드 ( 함수 ) (0) | 2022.01.12 |
[ JAVA ] 배열 활용하여 서점 프로그램 구현하기 (0) | 2022.01.12 |