1. 예외란 ?
예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
Exception 종류 |
발생 원인 |
ArithmeticException |
정수를 0으로 나눌경우 발생 |
ArrayIndexOutOfBoundsExcetion |
배열의 범위를 벗어난 index를 접근할 시 발생 |
ClassCastExcetion |
변환할 수 없는 타입으로 객체를 반환 시 발생 |
NullPointException |
존재하지 않는 레퍼런스를 참조할때 발생 |
IllegalArgumentException |
잘못된 인자를 전달 할 때 발생 |
IOException |
입출력 동작 실패 또는 인터럽트 시 발생 |
OutOfMemoryException |
메모리가 부족한 경우 발생 |
NumberFormatException |
문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 |
로 표시된 Exception은 발생 빈도수가 높다.
2. try catch 구문을 사용해야하는 이유 ?
- try catch 구문을 통해 예외처리(Exception Handling) 하여 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있다.
3. try catch 구문 사용법
try{
// 예외가 발생할 수 있는 코드
} catch(Exception e){
// Exception1 이 발생한 경우, 처리를 위한 코드
} catch(Exception2 e){
// Exception2 이 발생한 경우, 처리를 위한 코드
} finally{
// 예외 발생 여부에 상관없이 실행되어야 하는 코드
}
- try{} 안에는 예외가 발생할 수 있는 코드를 넣어준다.
- catch(Exception e){} 안에는 매개변수에 선언되어 있는 Exception이 발생했을 때, 처리할 코드를 넣어준다.
- finally{} 안에는 예외 발생 여부에 상관없이 실행되어야 하는 코드를 넣어준다.
ex) 다음 코드를 실행시키면 아래 결과값이 나온다.
try{
String txt1 = null;
String txt2 = "test";
if(txt1.equals(txt2)){
System.out.println("같은 문자열");
} else{
System.out.println("다른 문자열");
}
} catch(Exception e){
System.out.println("예외발생!!");
} finally{
System.out.println("프로그램 종료");
}
txt1이 null 인데 equals()를 호출하는 경우 NullPointException이 발생하여 catch 구문의 "예외발생"과 finally 구문의 "프로그램 종료"가 출력된다.
4. 사용시 주의점
- 예를 들어 웹개발시 구성이 [ Controller <-> Service <-> Mapper ] 처럼 되어있는 경우 Service, Mapper 단에서 발생하는 모든 예외는 throws Exception 처리하여 Controller 단에서 처리하는게 좋다.
ex)
- Controller.java
@RequestMapping(value="test.do")
public String controllerTest(){
@Autowired
private TestService testService;
try{
testService.test();
} catch(Exception e){
e.printStackTrace();
return "errorPage.jsp"
}
}
- Service.java
@Service
public class ServiceTest {
@Autowired
private TestMapper testMapper;
public void test() throws Exception{
testMapper.test();
}
}
- Mapper.java
@MapperScan
public interface MapperTest {
public void test() throws Exception;
}
'JAVA > 코딩' 카테고리의 다른 글
[JAVA] mkdir mkdirs 차이 (1) | 2021.03.23 |
---|---|
[JAVA] 날짜 계산하기(더하기, 빼기 등) (2) | 2021.03.22 |
Spring @PostMapping @GetMapping @PatchMapping @PutMapping @DeleteMapping (0) | 2021.02.25 |
Tiles 란? (0) | 2021.02.18 |
main 클래스 args 사용하기 (0) | 2021.02.18 |