[국비 학원 기록/자바] 예외처리 종류, try catch, throw, throws
my code archive
article thumbnail
반응형

1. 오류의 종류

1)에러(Error)

-의도치 않게 프로그램이 종료되는 것을 에러라 함.

-하드웨어의 잘못된 동작 또는 고장으로 인한 오류

-에러가 발생하면 프로그램이 비정상 종료가 됨.

-정상 실행 상태로 돌아갈 수 없음.

 

2)예외(Exception)

-사용자가 잘못된 조작 or 개발자의 잘못된 프로그래밍으로 인한 오류를 말함.

-예외가 발생하면 프로그램이 종료됨.

-단, 예외 처리를 추가하면 정상 실행 상태로 되돌릴 수 있음.

 

2. 프로그램에서의 예외(오류)

1)컴파일 오류(compile error, checked exception)

-프로그램 코드 작성 중 발생하는 문법적 오류

-예외 처리 코드가 없다면 컴파일 예외 발생함.

-이클립스에서 대부분 detection됨.

2)실행 오류(runtime error,unchecked exception)

-실행 중인 프로그램이 의도하지 않은 동작(bug)을 하거나 프로그램이 중지되는 오류

-실행 오류는 비정상 종료가 되는 경우 시스템에 심각한 장애를 줄 수 있음.

-NullPointerException, ArrayIndexOutofBoundsException, NumberFormatException

 

3. 예외 처리의 중요성

1)프로그램의 비정상 종료를 피하여 시스템이 원활하게 실행되기 위해서.

2)실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다.

3)오류가 발생한 경우 log를 남겨서 추후 log분석을 통해 그 원인을 파악하여 bug 수정하는 것이 중요.

 

4. 예외 처리하기와 미루기

1)try-catch문

-try블럭에는 예외가 발생할 가능성이 있는 코드를 try 블럭 안에 기술.

try {
예외가 발생할 수 있는 코드
} catch (처리할 예외 타입 e) {
 try 블럭 안에서 예외가 발생했을 때 예외를 처리하는 부분
}

 

2)try~catch-finally문

-finally 블럭에서 파일을 닫거나 네트워크를 닫는 등의 리소스 해제 구현.

-try{ }블럭이 수행되는 경우 finally{ }블럭은 항상 수행됨.

-여러 개의 예외 블럭이 있는 경우 각각에서 리소스를 해제하지 않고 finally 블럭에서 해제하도록 구현함.

 

3)try with resources문

-리소스를 사용하는 경우 close( )하지 않아도 자동으로 해제되도록 함.

-리소스를 try{ }내부에서 선언해야만 함.

-close( )를 명시적으로 호출하지 않아도 try{ }블럭에서 열린 리소스는

 정상적인 경우 or 예외가 발생한 경우 모두 자동으로 해제된다.

-해당된 리소스 클래스가 AutoCloseable  인터페이스를 구현해야 함.

  =>FileInputStream의 경우에는 AutoCloseable을 구현하고 있음.

 

4)예외 처리 미루기(throws)

-메서드를 호출한 곳에서 예외를 처리하라고 떠넘기는 방식.

-호출한 곳에서 반드시 예외처리 코드가 있어야 함.

-throws를 이용하면 예외가 발생할 수 있는 부분을 사용하는 문장에서 예외를 처리할 수 있음.

 

5)하나의 try{ }블럭에서 예외가 여러 개 발생하는 경우

-여러 개의 예외가 발생하는 경우 예외를 묶어서 하나의 방법으로 처리할 수 있음 => ' | ' 기호 사용

-각각 예외를 따로 처리할 수도 있음.

-Exception 클래스를 활용하여 처리할 때 Exception 블럭은 맨 마지막에 위치해야 함.

 

5. 강제로 예외 발생시키기 - throw

비밀번호 예제

상속을 위한 기본 생성자를 위해 super() 생성

 

 

 

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형