프로그램 오류
컴파일에러 : 컴파일 할 때 에러 ( 구문체크, 번역, 최적화 시 발생되는 에러 ) 실행 전 에러 표시
런타임에러 : 실행 중 발생되는 에러
예외 클래스의 계층 구조
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 |