[Java] 자바 (1) 예외처리 - 조건문 사용과 그 문제점
예외처리 : 예외 처리 문법이 없을 경우
- 개인용 프로그램일 때는 에러가 떠도 큰 문제가 없을 수 있지만, 기업에서 운영하는
웹브라우저가 사용자로부터 요청 받으면 안되는 데이터를 받게 될 경우, 서버가 느려
지거나 뻗는 문제가 발생할 수 있다. 이런 경우에 사용하게 되는 문법이 예외처리이다.
-
조건문을 사용하여 예외처리를 하는 경우
public class Test02 {
public static float divide(float a, float b) {
if (b == 0) {
return -121255f;
}
return a / b;
}
public static void main(String[] args) {
float result = divide(10, 2);
if (result == -121255f) {
System.out.println("0으로 나눌 수 없습니다.");
} else{
System.out.println(result);
}
result = divide(10, 0);
if (result == -121255f) {
System.out.println("0으로 나눌 수 없습니다.");
} else {
System.out.println(result);
}
}
}
- 실행 결과 :
5.0
0으로 나눌 수 없습니다.
문제점
- 조건문을 사용하여 예외처리를 하는 경우 메서드를 호출할 때마다 그 리턴 값을
검사해야 한다.
- 메서드를 사용하는 코드 안에 일을 시키는 코드와 예외처리 코드가 섞여 있어서
유지보수가 어려워진다.
- 리턴값이 유효한 값인 경우가 종종 발생할 수 있다. (다음 예제 참고)
위 예제에 다음 코드를 추가해보기
result = divide(121255, -1);
if (result == -121255f) {
System.out.println("0으로 나눌 수 없습니다.");
} else {
System.out.println(result);
}
- 실행결과 :
5.0
0으로 나눌 수 없습니다.
0으로 나눌 수 없습니다.
- 0으로 나누지 않았는데도 불구하고 리턴 값이 -121255가 되는 바람에 0으로 나눈
것으로 처리된다.
'Programming > java' 카테고리의 다른 글
[Java] 컬렉션 클래스 - ArrayList를 직접 만들어서 내부 구조를 이해해보자 (0) | 2017.05.17 |
---|---|
[Java] (2) 예외처리 - 1. throw throwable 2. Error 예외와 Exception 예외 비교 (0) | 2017.05.17 |
[Java] 자바 제네릭 (Generic) 문법 (0) | 2017.05.17 |
[Java] 컬렉션 - [Map] HashMap(java.util.HashMap) (2) | 2017.05.16 |
[Java] 컬렉션 클래스 - [Set] HashSet (java.util.Hashset) (0) | 2017.05.16 |