월루를 꿈꾸는 대학생

CH8 예외처리 본문

Programing/Java

CH8 예외처리

하즈시 2021. 4. 18. 19:11
728x90

1. 예외처리

 

1.1 프로그램 오류

- 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료 --> 프로그램 에러 혹은 오류 

 

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

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

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

 

 

런타입 발생 시 

 

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

예외 : 프고르ㅐㅁ 코드에 의해서 수습될 수 있는 다소 마약한 오류 

 

 

1.2 예외 클래스의 계층구조 

 

http://www.joshi.co.kr/index.php?mid=board_aCLN93&document_srl=291241

 

Exception 클래스들 : 사용자의 실수와 같은 외적 요인으로 인해 발생 예외 -> checked

RuntimeException 클래스들 : 프로그램의 실수로 벌생하는 예외 - unchecked 

 

 

1.3 예외처리하기 try-catch 문 

 

예외처리란 ?

- 프로그램 실행시 발생할 수 있는 예기치 못한 예외에 의한 발생에 대비한 코드 작성 

- 프로그램의 비정상적인 종료를 막고 정상적인 상태 유지하도록 

 

** 에러와 예외는 모드 런타임시에 발생하는 오류 

 

 

 

random() 으로 0이 나와서 오류 출력 

 

이런 걸 막기 위해서 예외처리 구문을 추가한다 

 

try - catch 로 예외 처리 

 

1.4 try-catch 문에서의 흐름 

 

try블럭 내에서 발생한 경우 

1. 발생한 예외와 일치하는 catch블럭이 있는지 확인 

2. 일치하는 catch 블럭을 찾으면 그 블럭 내의 문장을 수행하고 전체 try-catch문을 빠져나가서 다음 행 수행 

** 즉 예외발생 후에 바로 catch문으로 감 ...! 

3. 만약 catch 문 없으면 예외처리 불가 

 

try 블럭 내에서 예외가 발생하지 않은 경우 

1. catch 블럭을 거치지 않고 try-catch 문을 빠져나가서 수행 계쏙함 

 

 

printStackTrace .. getMesaage() 

 

예외 클래스의 인스턴스에 발생한 예외에 대한 정보가 printStackTrace .. getMesaage() 을 통해 얻을 수 있음 

 

 

printStackTrace .. getMesaage() 함수를 통해 접근해서 메세지 출력이 가능 단! try - catch 문에서 가능 

 

 

멀티 catch 블럭 

 

catch 블럭을 | 사용해서 하나의 catch 블럭을 합칠 수 잇는 것 

 

다만 부모와자손 관계에 있으면 오류 뜸 .. 블필요한 코드 

 

 

멀티 catch는 하나의 catch 블럭으로 여러 예외를 처리하는 것 

 

 

 

1.6 예외 발생시키기 

 

1. 먼저 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만듦

 

    Exception e = new Exception (" 발생시킬 메세지 ");

 

2. 키워드 throw를 이용해서 예외발생 

    

    throw e ; 

 

 

 

 

1.7 메서드에 예외 선언하기 

 

예외를 메서드에 선언하는 방법 -> 예외를 처리하는 것이 아니라 호출한 메서드로 전달하는 것 

메서드 선언부에 키워드 throws 사용 

 

** 메서드 내에서 발생한 예외를 자체적으로 처리하지 않고 호출한 메서드에게 예외를 처리하라고 떠넘기는 것 

 

void method() throws Exception1, Esception2 , ... ExceptionN {
	// 메서드 내용 
}

 

** 예외 발생시키는 키워드 throw // 예외 메서드 선언시 사용하는 throw

 

 

예외가 발생한 메서드 내에서 자체적으로 처리해도 되는 것은 메서드 내에서 try - catch 문을 사용해서 처리하고 

메서드에 호출 시 넘겨받아야할 값을 다시 받아야할 경우 즉 메서드 자체해결 불가 경우 예외를 메서드에 선언해서 호출한 메서드에서 처리 

 

 

1.8 finally 블럭 

 

finally 블럭은 발생여부에 상관없이 실행되어야할 코드 

 

 

 

 

 

1.11  예외 되던지기 

 

한 메서드에서 발생할 예외가 여럿인 경우 몇 개는 try-catch 에서 처리 

나머지는 선언부 지정한 호출 메서드 처리 

즉 양쪽에 나누어 처리 

 

1. try - catch 문 사용해서 예외 처리 

2. catch 문에서 필요한 작업 행한 후 throw 로 다시 예외 발생 

3. 호출한 메서드에게 전달 후 해당 try-catch에서 다시 예외처리 

 

즉 양쪽 모두 처리를한다 

 

 

 

 

 

 

 

 

 

 

 

728x90

'Programing > Java' 카테고리의 다른 글

ch9 java api  (0) 2021.05.09
ch 8 알고리즘  (0) 2021.04.18
ch7-2 객체  (0) 2021.04.11
7_1 알고리즘  (0) 2021.04.04
7-1 객체지향  (0) 2021.04.04