- 학습 목표 1 : 자바 에러와 예외클래스 이해하기
-
프로그래밍의 오류
발생 시점에 따라 크게 3가지로 나눈다.-
컴파일 에러(compile-time error)
컴파일 시 발생하는 오류- ex. 문법 오류(syntax error), 타입 체크 오류(type check error)
-
논리적 에러(logical error)
실행은 되지만, 의도와 다르게 동작하는 오류
= 버그 -
⭐️
런타임 에러(runtime error)
실행 시 발생하는 오류- ex. 예외(exception), 에러(error)
-
Error와 Exception 모두 Throwable 클래스를 상속받는다.
-
Error(에러)
프로그램 코드에 의해 수습될 수 없는 예측 불가한 심각한 오류-
에러가 발생하면 프로그램이 종료된다.
-
주로 JVM에서 발생하는 문제로, 애플리케이션에서 직접 처리하거나 복구할 수 없다.
-
대표적인 에러
- OutOfMemoryError
메모리가 부족할 때 - StackOverflowError
스택 메모리가 부족할 때
- OutOfMemoryError
-
-
Exception(예외)
프로그램 코드에 의해 수습될 수 있는 예측 가능한 오류-
예외가 발생했을 때 프로그램이 종료될 수 있지만, 예외 처리 코드를 통해 정상적으로 실행을 계속할 수 있다.
-
분류
-
Checked Exception - 컴파일 에러
자바 소스를 컴파일하는 과정에서 발생하는 예외-
Exception을 상속받는다.
-
대표적인 컴파일 예외
- IOException
입출력 관련 예외 - SQLException
데이터베이스 관련 예외 - ClassNotFoundException
클래스를 찾을 수 없는 예외
- IOException
-
-
Unchecked Exception - 런타임 에러
Runtime Exception(실행 예외)이라고도 불리며, 실행 시 발생하는 예외-
RuntimeException을 상속받는다.
-
컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처리를 해야 한다.
-
대표적인 런타임 예외
-
NullPointerException
null 값을 갖는 참조 변수로 객체 접근 시String str = null; System.out.println(str.length()); // NullPointerException
-
ArrayIndexOutOfBoundsException
배열의 범위를 벗어난 인덱스로 배열에 접근 시int[] arr = new int[3]; System.out.println(arr[3]); // ArrayIndexOutOfBoundsException
-
NumberFormatException
숫자로 변환할 수 없는 문자열을 숫자로 변환 시String str = "abc"; int num = Integer.parseInt(str); // NumberFormatException
-
ClassCastException 상속/구현 관계가 아닌 클래스 간 형변환 시
// Dog와 Cat은 Animal을 상속받는다. Animal animal = new Dog(); Dog dog = (Dog) aninal; Cat cat = (Cat) animal; // ClassCastException
→
instanceof
연산자를 사용하여 형변환 가능 여부를 먼저 확인해야 한다.if (animal instanceof Cat) { // boolean Cat cat = (Cat) animal; }
-
-
-
-
isEmpty()
vs trim().isEmpty()
-
상황
샌드위치 주문 CLI 프로그램을 만드는데, 사용자가 값을 입력하지 않고 엔터를 눌렀을 경우를 처리하고 싶었다. -
의도
입력값(input)이 비어있는지 확인한다. -
input.isEmpty() vs input.trim().isEmpty()
-
input.isEmpty()
문자열의 길이가 0인지 확인한다.
- 이 메소드는 문자열이 공백 문자만 포함하고 있을 경우에도 false를 반환합니다.
-
input.trim().isEmpty()
문자열의 앞뒤에 있는 공백을 제거한 후(trim() 메소드의 작업), 그 결과 문자열이 비어있는지 확인한다.
- 문자열이 공백 문자만 포함하고 있을 경우 true를 반환합니다.
-
-
방법
사용자가 공백 문자만 입력했을 때 이를 비어있는 입력으로 처리하려면 input.trim().isEmpty()를 사용해야 한다.Topping.java
if (input.trim().isEmpty()) { break; }
- 스크럼 중 완료한 작업:
자바 에러와 예외클래스 이해하기
- 수업을 듣고 팀원들과 개념정리를 하는 시간에서도 헷갈리던 개념이었는데, 내용을 정리하면서 더 명확하게 이해할 수 있었다.
- 예외 처리 구현을 위한 try-catch 문과 throws 키워드에 대해 더 공부해야겠다.
- [이것이 자바다] 10. 예외 처리
- 에러와 예외클래스
- exception types