[24.06.26] JAVA_라이브러리, 예외 처리

ANGELA·2025년 1월 8일

[KB]학습내용정리

목록 보기
7/57

Java Development Kit Version 17 API Specification

자바 참고 자료

01. 예외처리

  • 반드시 적용 시켜야한다.
  • 자바에서는 강제화 시켜놓은것이다.
  • 굉장히 중요해용 → 실제 어플에서 써야한다.

02. java.base 모듈

1. object 클래스

1) equals()

2) hashCode() : 잘게 자른 숫자다.

  • code : 리턴이 int 다.

  • hash : 잘게 잘랐다.

  • 숫자 하나로 다르다를 빠르게 판단하겠다!

  • 디폴트(object) : 참조값 리턴

    • 자바는 자동 오버라이드 되어있다.
  • 내가 만든 것 : 기존 해시코드 활용

  • 컬렉션에서 쓰인다.

  • 다 구현체있음. 인터페이스다.
    - list : 배열 단점 보완 → 길이 고정 없어짐, 크기 줄이고 늘리기 가능
    - set : 중복 없이 저장할때 → set에서 해시가 쓰인다.
    - map : 키와 값 쌍으로 관리할때 (키:값)

💡 set 중복없이 처리하세요 → 코딩테스트에 많이 나옴

3) toString()

  • 문자열 + 객체 → 문자열로 변환 → toString() 호출
    - 문자열로 변환 시키고 싶을때 toString 오버라이딩해서 사용한다.
    - 올바르게 코드 짰는지 확인하고 싶을때

4) 레코드

  • 불변
  • 읽기전용
  • setter 빼고 다 자동 추가

2. 롬복 라이브러리

3. Arrays.toString → 배열 값 볼 수 있다.

4. 리프렉션 실습할때, 이렇게 하세요


03. 오후수업

  • 메세지의 본문에서 사용 : throw
    - new 키워드가 같이 붙는다.
    - 에러를 직접 클래스로 새로 만든다.
 
 
## 1교시
예외처리
### 예외
 프로그램 실행 중, 즉 런타임에 발생하여 프로그램 명령의 정상적인 흐름을 방해하는 원치 않거나 예상치 못한 이벤트입니다. 
프로그램에서 예외를 포착하고 처리할 수 있습니다.
메서드 내에서 예외가 발생하면 exception object 가 생성됩니다.
여기에는 예외 이름, 설명, 예외 발생 당시 프로그램 상태 등 예외에 대한 정보가 포함됩니다.

### 오류
JVM(Java Virtual Machine)의 메모리 부족, 메모리 누수, 스택 오버플로 오류, 라이브러리 비호환성, 무한 재귀 등과 같은 복구 불가능한 조건을 나타냅니다. 
error는 일반적으로 프로그래머의 통제 범위를 벗어나므로 오류를 처리하려고 해서는 안 됩니다. .

### 예외의 종류
https://www.w3schools.com/java/java_ref_errors.asp

### throw
- 메서드 내부에서 사용
- 하나의 예외를 명시적으로 던지는 데 사용
- throw 키워드의 구문에는 던져야 할 예외의 인스턴스가 포함

### throws
- 메서드 선언에서 사용
- 여러개의 예외를 선언하고 자동으로 일치하는 예외를 던짐
- throws 키워드에는 던져야 할 예외의 클래스 이름이 포함

### call stack (stack trace)
예외가 발생한 메소드에 도달하기 위해 호출된 메소드 목록

### Exception handler
호출 스택을 검색하여 발생한 예외를 처리할 수 있는 코드 블록

checked exception (컴파일 타임 예외) : 실행 이전 에 확인 할 수 있는 예외입니다
unchecked exception (런타임 예외) : 실행 이후에 확인 할 수 있는 예외입니다

### NullPointerException (NPE)
자바에서 널 포인터 예외는 런타임 예외입니다, 
자바는 null 값을 객체 참조에 할당 할 수 있습니다
- null 객체의 메소드를 사용
- null 객체의 필드에 접근하거나 수정
- 마치 배열인 것처럼 null의 길이를 취합니다.
- 마치 배열인 것처럼 null 개체의 슬롯에 액세스하거나 수정
- Throwable 값인 것처럼 nullthrow합니다.

### Null 값이 필요한 이유는 무엇입니까?
- Java에서 null은 값이나 참조가 없음을 나타내는 특수 값입니다. 변수나 개체에 현재 할당된 값이 없음을 나타내는 데 사용됩니다.
- null 값은 빈 문자열이나 빈 배열과 동일하지 않습니다. 빈 문자열은 문자가 포함되지 않은 문자열이고, 빈 배열은 요소가 포함되지 않은 배열입니다.
- Java 프로그래밍 언어에는 모든 참조 유형의 하위 유형인 "null"이라는 내장 null 유형이 있습니다.
그러나 인스턴스가 없고 인스턴스화할 수 없기 때문에 변수의 유형으로 사용할 수 없습니다.
- null은 대소문자를 구분합니다. nullJava에서 리터럴이고 Java에서 키워드는 **대소문자를 구분** 하므로 C 언어에서처럼 NULL 또는 0을 쓸 수 없습니다.
- Java의 모든 참조 변수는 기본값이 null 입니다 .
- "null"은 메소드에서 인수로 전달될 수 있습니다.
-  Java에서 null 값을 문자열 변수와 연결할 수 있습니다. Java에서는 연결로 간주됩니다.
여기서 nullString 변수와만 연결됩니다. nullString 이외의 다른 유형(Integer, Double)"+" 연산자를 사용하면 오류 메시지가 발생합니다.

## 2교시
예외처리 (예외 발생)
Object 클래스

#### try-with-resources
try에 자원 객체를 전달하면, try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능
AutoCloseable을 구현한 모든 객체를 사용할 수 있음

## 해시(Hash)
- 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값
- 특정한 데이터를 고정된 길이의 데이터로 변환하여 문장 내용이 완전히 같으면 완전히 같은 해시값을 가짐
- 충돌 회피성: 해시의 출력값이 충돌할 가능성은 희박. 여기서 충돌이란, 해시가 서로 다른 두 개의 입력값에 대해 동일한 출력값을 도출하는 상황

## maven
maven은 Java 기반 프로젝트를 빌드하고 관리하는 데 사용할 수 있는 라이브러리 자료실
POM 파일: POM(Project Object Model) 파일은 Maven이 프로젝트를 빌드하는 데 사용하는 종속성, 소스 디렉터리, 플러그인, 목표 등과 같은
프로젝트 관련 정보와 구성 정보를 포함하는 XML 파일

## Lombok
인텔리제이는 플러그인 설치
https://projectlombok.org/features/

## 자동 닫기 예외처리 코드
- autoclose trycatch 문
- 크롤링할때 많이 쓴다.
profile
혼자 보려고 만든 기록장 | 또또는 귀여워 🐈‍⬛

0개의 댓글