프로그램 오류



컴파일에러 : 컴파일 할 때 에러 ( 구문체크, 번역, 최적화 시 발생되는 에러 ) 실행 전 에러 표시


런타임에러 : 실행 중 발생되는 에러

예외 클래스의 계층 구조

Exception 과 RuntimeException

예외 처리하기_try_catch문




일치되는 예외처리 있음

비정상 종료 : 일치되는 예외처리 없음 ( 실행 중 예외발생 )

정상 종료 : 일치되는 예외처리 2번째에 있음
printStackTrace(), getMessage()

예외 발생 시 예외객체 생성 -> 맞는 예외 catch블록 찾음-> 찾으면 catch블록 참조변수와 예외객체 연결
해당 catch블록 예외객체 사용 가능

printStackTrace() : 예외객체 안에 예외정보
getMessage() : 예외객체 안에 메시지
멀티 catch 블럭

catch ( 부모 | 자식 참조변수)x : 컴파일러 에러 -> catch (부모 참조변수) o
부모만해도 사용 가능 하니까 ( 의미상 동일 )
예외발생시키기 (throw)

checked예외, unchecked예외



RuntimeException을 예외처리 필수로 했다면 모든 코드에 try_catch블록을 사용해야 한다.
그래서 프로그래머가 작성해야되는 RuntimeException은 예외처리를 선택

메서드에 예외 선언하기, finally

예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구별

둘 다 선언해도 되지만 정석은 필수처리 예외만 선언 ( 체크드예외 )

try-catch문이 모든 메서드에 없어서 예외를 떠 넘기다가 마지막에는 JVM기본예외처리기가 처리 함
결과를 보게 되면 예외가 발생한 당시 출력( 예외가 처리된게 아님 실제로 처리 될라면 try-catch문이 필요 )


finally 블럭

사용자정의예외 만들기

포인트는 조상 선택과 String 매개변수가 있는 생성자를 넣어주기
예외 되던지기 ( 다시 던지기 )

양 쪽에서 분담처리 할 때 사용됨
연결된 예외

initCause : 원인예외(A)를 (B)에 포함 시킴

연결된 예외 : 어떤 예외를 다른 예외로 감싸는 거

세부적인 예외를 포괄적인 예외로 감쌀 때 사용

변경 하는 이유는 try-catch문을 필수에서->선택으로 바꾸기 위해서
'Java' 카테고리의 다른 글
| java.lang패키지와 유용한 클래스(Strung 클래스) (0) | 2023.05.16 |
|---|---|
| 내부클래스, 익명클래스 (0) | 2023.03.30 |
| 객체지향 프로그래밍 II (0) | 2023.03.27 |
| 객체지향 프로그래밍 I (0) | 2023.03.15 |
| 배열 (0) | 2023.03.08 |