본문 바로가기
IT/JAVA

[Java] Exception - Runtime Exception (ArithMeticException, IndexOutOfBoundsE, NumberFormatException)

by 행복한 용용이 2020. 10. 23.
반응형

Error의 종류

1. 문법에러

2. 논리에러 -1,2 : 사용자의 잘못

3. 시스템에러 - 3. : 프로그램의 잘못

Exception Handling : 예외 처리

java.lang에 Exceptions Class들 있음

그 중 Exception Class가 Exception Class들 중 최상위 Class


**Exception

   - Runtime Exception : 예외처리X , Logic으로 처리해서(if문) 그 예외가 안나오게 해야함.

      ex) ArithmeticException(0으로 나누기 못함),

           NumberFormatException(>isnumber),

           NullPointerException(객체가 null인데 객체. 할때)

   - None-Runtime Exception : 반드시 code상에서 예외처리 해야함. ex)IO Exception

   - 1. throws : 미래형 에러가 나면 호출한 곳으로 던지겠다.

           어디선간 try catch 해야하고 그럼 각자 다른 방법으로 오류 처리가능

           (main까지 throws하는 방법은 좋지 않음)

   - 2. try ~ catch : try - 일단 시도 / catch - 에러가 나면 예외발생시 처리코드

           Exception나올 수 있는 코드에 직접 try~catch 하면 일괄적으로 Exception 처리 가능

           다중catch : catch는 여러번 쓸 수 있음. exception이 여러개 날 수 있기 때문

           >> AEx을 BEx는 상속받았다. (BEx는 AEx이다 성립)

           그럼 상위 Ex가 하위 Ex보다 먼저 올 수 없다. BEx부터 catch하고 AEx catch해야함.

           Finally : Exception이 발생 하던 발생하지 않던 무조건 실행되는 영역


1. Exception나올 수 있는 code에 thorws 하고 각자 try~catch 처리하는 방법 : B와 C가 각자 다르게 Exception 처리 가능

2. 바로 Exception나올 수 있는 code에 try~catch 처리하는 방법 : 일괄적으로 Exception 처리 가능

A class

method x() throws ~Exception

~

~

try{

    ~

    ~ : Exception 있을 만한 코드0

} catch (A~Exception) {

    AException에 대한 처리코드

} catch (B~Exception) {

    BException에 대한 처리코드

} finally {

    Exception이 발생하든 말든 무조건 실행해야 하는 code

}

~

~


1. ArithMeticException

: 0으로 나눴을 때

-try catch로 고치는 방법은 에러가 안나게 하는 것이 아니라 에러가 났을 때 대처해라 라는 것임으로 소잃고 외양간 고치는격..

-ArithMeticException은 RuntimeException이기 때문에 try catch로 처리해야하는 것이 아니라 logic으로 처리해야한다.


2. IndexOutOfBoundsException

: Bounds 넘었을 때

- for문을 돌릴 때 s의 길이만큼만 돌린다.


3. NumberFormatException

: parseInt할 때 Number가 아닌 경우 생기는 exception

- try catch 이용 : 에러가 나면 대처하는 것임으로 RuntimeException에선 좋지 않음

- isNumber라는 method 만들어서 number인지 아닌지 logic으로 구별하는 것이 좋다.

ClassCastException

: 형변환 할 수 없을 때

ClassNotFoundException (비런타임)

: class 찾을 수 없을 때

IllegalAccessException (비런타임)

: 접근자가 잘못됬을 때

IllegalArgumentException

: 인자값이 잘못됬을 때

NullPointerException

: . 앞에 있는 것이 null일 때

ex)

String s = null;

s.length(); >> NullPointerException


Runtime익셉션은 예기치 못한 곳에서 나타난다.

개발자들이 test 해볼때 , closebeta, openbeta 할 때 익셉션들 잡음

하지만 non runtime exception은 프로그램상의 exception임으로 개발할 때 잡아야함

 

 

 

[출처] 빡쏘끼룩

반응형