Q0. 개요
프로세스 실행 중 여러 가지 에러(시스템/로직/DB 등)가 발생하는 경우를 위해 예외 처리라는 것이 존재한다.
예외 처리에는 try ~ catch 또는 throw를 사용하거나, throws 클래스를 상속받는 3가지 방법이 있다.
예외 처리는 에러가 발생하여 시스템이 중단되는 현상을 방지하기 위해 사용한다.
예외 처리는 어떻게 선언하고 메세지를 뿌릴지만 알아도 된다.
Q1. try ~ catch문
기본적인 구조 try ~ catch ~ finally구문을 로직에 감싸는 형태로 사용된다. (자바에서 에러발생시 뱉어냄)
public void test(){
int num1;
int num2;
try{
/* 예외처리를 지정할 코드영역 (메서드 전체로 잡거나 일부만 지정할 수 있다)
오류가 존재하는 경우 catch가 실행되며 오류가 없는 경우 catch는 실행되지 않는다
사용할 변수는 try~catch문 밖에서 선언해야지 예외처리가 종료된 이후에도 변수를 사용할 수 있다
*/
num1 = 0;
num2 = 10;
System.out.println(num1 / num2);
}catch(Exception e){
/* catch와 finally는 둘 중 하나는 생략이 가능하지만, 둘 다 생략은 불가능하다.
e.getMessage()는 에러의 원인을 간단하게 출력한다.
e.toString()는 에러의 Exception내용과 원인을 출력한다.
e.printStackTrace()는 에러의 발생근원지를 찾아서 단계별로 에러를 출력한다.
*/
e.printStackTrace();
}finally{
/* finally를 작성 시 에러발생여부와 상관없이 무조건 실행되는 구문입니다*/
}
}
Q2. throw구문
try ~ catch 구문안에서 사용한다. 자바에서 에러가 발생하기 전에, 사전에 커스텀으로 에러를 뱉도록 설정한다.
public void test(){
int num1;
int num2;
try{
num1 = 0;
num2 = 10;
if(num1 == 0 || num2 == 0){
/*내부Exception를 이용하거나
별도로 커스텀한 예외클래스notZeroCalcException를 만들어 사용한다*/
throw new notZeroCalcException();
//throw new Exception();
}
System.out.println(num1 / num2);
}catch(notZeroCalcException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
Q3. throws상속
해당 메서드에 예외클래스를 상속받아서, 예외 처리 한다. (단, 상속 관계의 메서드는 throws가 모두 작성되어 있어야 한다)
public void test() throws Exception{ //Exception클래스 또는 커스텀예외클래스를 상속받아서 사용한다
int num1;
int num2;
try{
num1 = 0;
num2 = 10;
System.out.println(num1 / num2);
}catch(Exception e){
e.printStackTrace();
}
}
Q4. 결론적으로
3가지 예외 처리 방법 중에 원하는 방법을 선택하여 사용하면 된다. 기능적인 차이점은 없기에 각자의 코드 가독성과 입맛에 맞게 선택하면 된다.개발을 하다보면 자주 발생되는 에러나 파일 업로드 등 관련하여 예외 처리를 자주 사용할 것이다.앞으로 서비스에 문제 되지 않는 클린 코드를 위해서 꼭 필요한 기능이다.
'WEB 심화 > Back-End' 카테고리의 다른 글
[SPRING] AOP, Filter, Interceptor, DI, IOC 비교 정리 (0) | 2023.12.07 |
---|---|
[OS] 운영체제의 Shell과 주요 기능 (1) | 2023.11.27 |
[Java] 변수/상수/리터럴/인스턴스/객체/빈이란 (1) | 2023.11.26 |
[Java] n자리 소수점까지만 출력 (0) | 2023.11.23 |
[Spring] Session Timeout 설정 방법 (0) | 2023.11.23 |