본문 바로가기

java

Step13_Exception (try catch문, Exception)

 

 

try{}catch{} 

 

try {}안에 있는 코드들이 정상 작동하면 넘어가고 오류가 나면 catch{} 안에 있는 코드가 실행된다.

 

Exception (예외)

 

NumberFormatException

숫자형식으로 입력하지 않았을때 생기는 오류이다.

ArithmeticException

어떤 수를 0으로 나누려 할때 발생하는 오류이다.

Exception

위의 2가지 예외를 제외한 오류이다.

 

 

MainClass01 (try catch문)

 

MainClass01
MainClass01 console 1
MainClass01 console 2

 

해당 예시는 솟자를 문자열로 입력 받고 이후에 숫자 형태로 변환한 뒤 연산을 해서 출력해주는 기능을 하는 코드이다.

다만 이때 숫자가 아닌 문자를 입력하면 입력은 되지만 숫자로 변환되지는 않는다. 이때 NumberFormatException오류가 일어나는데 해당 상황에서 오류가 나면 실행한 기능이 있다면 try catch문을 사용하면 된다.

 

try catch 문에서 해당 예시는 NumberFormatException오류이기 때문에 NumberFormatException nfe를 작성했다.

(nfe는 NumberFormatException의 약자로 임의로 작성했다.)

예외 상태가 발생했을때 nfe 예외 객체에 참조값으로 전달된다.

예외 객체가 NumberFormatException이라면 catch 이하의 코드로 넘어간다.

 

getMessage()

For input string: "십"

예시와 같은 형태이다. 어떤 입력 문자가 예외 상태를 만들었는지 표시해준다.

printStackTrace()

MainClass01 console2 에서 파란글씨와 빨간글씨는 printStackTrace()로 인해 생성된 것이다. 오류 메시지를 표시해준다.

 

 

 

NumberFormatException도 class 로 Exception과 RuntimeException을 상속받는다.

 

 

MainClass02 (더 다양한 예외상황)

 

MainClass02

 

Exception (예외)

 

NumberFormatException

숫자형식으로 입력하지 않았을 때의 예외 상황을 나타내는 type이다.

ArithmeticException

어떤 수를 0으로 나누려 할때의 예외 상황을 나타내는 type이다.

Exception

모든 예외의 부모 type으로 모든 예외상황을 나타내는 type이다.

 

다음과 같이 try catch 구문에 다수의 catch를 사용하여 다수의 예외상황을 대비할 수 있고 finally를 사용해서 예외 발생과 상관없이 실행할 것을 작성할 수 있다. 지금은 finally 의 유무가 상관 없어 보이지만 추후에 필요할때가 있다고 한다.