[커널아카데미] 백엔드 12기 5주차 - 자바_예외처리 & java.lang 패키지

jh5959·2025년 4월 26일
0

예외처리

프로그램 오류

프로그램 오류: 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정삭적으로 종료되는 경우

  • 컴파일 에러: 컴파일 시 발생하는 에러

  • 런타임 에러: 실행 시에 발생하는 에러

  • 논리적 에러: 실행은 되지만 의도와 다르게 동작하는 것

  • 에러(error): 프로그램 코드에 의해서 수습될 수 없는 심각한 오류

  • 예외(exception): 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

예외 클래스의 계층구조

  • Exception 클래스 - IOException, ClassNotFoundException
    - RuntimeException 클래스 - ArithemicExceptionm ClassCastException, NullPointException

Exception: 사용자 실수, try-catch 필수
RuntimeException: 프로그래머 실수, try-catch 필수 아님

예외처리하기 - try-catch문

예외처리

  • 정의: 프로그램 실행 시 발생할 수 잇는 예외에 대비한 코드를 작성하는 것
  • 목적: 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지하는 것

발생한 예외를 처리하지 못하면 프로그램은 비정상적으로 종료 -> JVM의 예외처리기가 받아 예외의 원인을 화면에 출력

tyr{
	//예외가 발생할 가능성이 있는 문장들
}
catch(Exception e1){
	//Exception1 발생했을 경우 이를 처리하기 위한 문장을 적는다  
}catch(Exception e2){
	//Exception2 발생했을 경우 이를 처리하기 위한 문장을 적는다  
}catch(Exception e3){
	//Exception3 발생했을 경우 이를 처리하기 위한 문장을 적는다  
}

흐름

  • try 블럭 내에서 예외가 발생한 경우
    - 발생한 예외와 일치하는 catch블럭이 있는지 확인
    - 일치하는 catch블럭을 찾게 되면 블럭 내 문장 수행, try-catch 문 빠져나가고 그 다음문장 수행 만약 일치하는 catch문을 찾지 못하면 예외처리 못함
  • try 블럭 내에서 예외가 발생하지 않은 경우
    - catch블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행을 계속한다

예외 발생시키기

연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
Exception e = new Exception("고의로 발생시켰음");
키워드 throw를 이용해서 예외를 발생시킴
throw e;

메서드에서 예외 선언하기

  • 예외를 처리하는 또 다른 방법
  • 사실은 예외 처리가 아니라 호출한 메서드로 전달해주는 것
  • 호출한 메서드에서 예외처리를 해야만 할 때 사용
void method() throw Exception1, Exceptiom2,...{
	//메서드 내용
}

finally 블럭

  • 예외의 발생여부에 상관없이 실행되어야 하는 코드
  • 선택적 사용 가능 try -> catch -> finally 순서
  • 예외 발생 시 try -> catch -> finally 순서
  • 예외 미발생 시 try -> finally 순서
  • try 또는 catch 블럭에서 return문을 만나도 finally블럭은 수행
try{
	//예외가 발생할 가능성이 있는 문장들을 넣는다
}catch(Exception1 e1){
	//예외처리를 위한 문장을 적는다
}finally{
	//예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다
	//finally 블럭은 try-catch문의 맨 마지막에 위치해야한다
}

사용자 정의 예외 만들기

프로그래머가 새로운 예외클래스를 정의하여 사용할 수 있다

class MyException extends Exception{
	MyException(String msg){ //문자열을 매개변수로 받는 생성자
		super(msg) //조상인 Exception클래스의 생성자를 호출한다
	}
}

예외 되던지기

  • 한 메서드에서 발생할 수 있는 예외가 여럿인 경우
  • 몇개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고
  • 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 한다
  • 단 하나의 예외에 대해서도 예외가 발생한 메서드와 호출한 메서드, 양쪽에서 처리하도록 할 수 있음

연결된 예외

A가 예외 B를 발생 시켰다면 A를 B의 원인 예외라고 함

Throwable initCause(Throwable cause) //지정한 예외를 원인 예외로 등록
Throwable getCause() //원인 예외를 반환


java.lang 패키지

Object 클래스

  • 모든 클래스의 최고 조상, 오직 11개의 메서드만 가지고 있음
  • public boolean equals(Object obj): 객체 자신과 객체 obj가 같은 객체인지 알려준다(같으면 true)
  • public String toString(): 객체 자신의 정보를 문자열로 반환한다

equals(Object obj): 등가 비교(주소 비교)
toString(): 인스턴스 변수에 저장된 값들을 문자열로 표현

String 클래스

  • 불변
  • 문자열 비교는 equals사용하기
  • 문자열 리터럴: 한번 생성하면 변경X, 하나의 인스턴스 공유
  • 빈 문자열: 공집합, 길이가 0인 배열, int[] iArr = {}; // 길이가 0인 int 배열
  • join()과 StringJoiner: 여러 문자열 사이에 구분자를 넣어서 결합

StringBuffer클래스와 StringBuilder클래스

  • 가변이다
  • 두 클래스는 거의 같음

Math클래스

  • round(): 올림, 버림, 반올림

래퍼클래스

: 기본형을 참조형으로 표현한 것

  • char와 int를 빼고는 앞 글자를 대문자로 하면 됨
  • Character, Integer

문자열 -> 숫자

  • Integer.parseInt("100") or Integer.valueOf("100")

오토박싱 & 언박싱

  • 기본형과 참조형이 계산이 됨
  • 컴파일러가 자동으로 변환해줌
  • 오토박싱: 기본형 -> 참조형
  • 언박싱: 참조형 -> 기본형

주간회고

  • 자바 진도가 끝났다 진도를 겨우 따라갔는데 드디어 자바가 끝났다
  • 복습을 매일 하지 못했다 진도를 따라가지 못해서 약간 지쳐서 복습을 못했다
  • 아직 개념이 잡히지 않은 챕터(11장, 12장)가 있다
  • 특히 12장이 진짜 이해가 안된다 많이 해보면 언젠가 알게되겠지뭥...

다음주 목표

  • 다음주 월요일에 보는 시험을 위해 자바 복습을 계속할 예정이다
  • 하루 한시간 자바 목차보면서 종이에 쓰기
  • 실습 많이 하기 특히 11장 12장!
  • 그리고 제발 11시 전에 자기 진짜 피곤해서 공부가 안된다

0개의 댓글