마트철수
[034] 예외 처리, Object Class 본문
2024.06.26(수)
JAVA 7일차
클래스는 필드, 생성자, 메서드 → #필생메
상속은 메소드 오버라이딩, 다형성, 추상 → #메오다추
문자열은 String 타입 → substring, indexOf, split
main 메소드(혹은 생성자) 안에 위치하면 → 로컬 클래스
ch11 예외 처리
예외와 예외 클래스
예외
: 잘못된 사용 또는 코딩으로 인한 오류
: JAVA에서는 예외 처리가 필수임 (catch 코드 사용)
리소스 자동 닫기
: 리소스는 데이터를 제공하는 객체 / 리소스 사용을 위해서 open, close가 필요
: AutoCloseable 인터페이스를 구현한 객체만 리소스 자동 닫기 가능 (JAVA의 객체들은 모두 구현한 상태)

▲ 외부 리소스 변수 사용하여 간단하게 작성 가능
사용자 정의 예외
: 표준 라이브러리에는 없어 직접 정의하는 예외 클래스
- 예의 발생시키기: throw 키워드로 예외를 던짐
- JAVA에서는 예외처리가 필수임

▲ 정상 작동 외에는 다 InsufficientException에서 오류 잡음
▲ RuntimeException은 약한 에러 (외울 필요 없음)
ch12 Java.base 모듈
Object 클래스
<사진>
JS에서의 '==='의 역할과 동일함
객체 해시코드
public int hashCode()
#해시코드의 코드 = 숫자다 / 해시 = 식별자
ex) 블로그 글에서의 해시코드
Hash set에 들어가는 데이터는 hashCode( ), equals( )를 오버라이딩해야 set이 운영됨 ??
List, Set, Map 모두 인터페이스임
HashSet( ): Hash 코드를 기반으로 중복 검사를 하겠다
레코드 선언
: DTO 작성 시 반복적으로 사용되는 코드를 줄이기 위해 도입
: 불변객체로 만들어짐
: Getter 메소드, hashCode( ), equals( ), toString( ) 자동 추가
롬복 사용하기 (★)
: DTO 클래스를 작성할 때 Getter, Setter, has~ 메소드를 자동 생성
@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstuctor
#롬복이라는 라이브러리라고 이해하기
실습
package ch11.sec02.exam01;
public class ExceptionHandlingExample2 {
public static void printLength(String data) {
try {
int result = data.length(); // data가 null일 경우 NullPointerException 발생
System.out.println("문자 수:" + result);
} catch (NullPointerException e) { // 해당 예외가 발생했을 경우 처리하는 부분
System.out.println(e.getMessage());
} finally { // 예외가 발생하든 안 하든 무조건 실행되는 부분
System.out.println("[마무리 실행]\n");
}
}
public static void main(String[] args) {
System.out.println("[프로그램 시작]\n");
printLength("ThisIsJava");
printLength(null);
System.out.println("[프로그램 종료]");
}
}
> finally는 예외가 발생하든 안 하든 무조건 실행됨
> 빨간줄 뜨면 일반예외
}catch(Exception e){
// Exception은 모든 예외의 부모 클래스로 위에서 해당하지 않은 예외들이 들어올 경우 처리해줌
// if문에서의 else와 같은 역할
> catch(Exception e)는 가장 하단에 기입
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [036] 프로그래머스: 완주하지 못한 선수, 소수 만들기, 예산 (1) | 2024.06.28 |
|---|---|
| [035] Java: 포장클래스, 멀티 스레드 (0) | 2024.06.27 |
| [032] JAVA 인터페이스 (상속과 비슷한) (1) | 2024.06.21 |
| [031] JAVA 상속 오버라이딩 (1) | 2024.06.20 |
| [030] 클래스는 필드, 생성자, 메소드 (0) | 2024.06.19 |