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임으로 개발할 때 잡아야함
[출처] 빡쏘끼룩
'IT > JAVA' 카테고리의 다른 글
[Java] I/O 2(입출력) (java.io) - reader Class(reader, fileReader, bufferedReader) (0) | 2020.11.11 |
---|---|
[Java] I/O (입출력) (java.io) - println, file (0) | 2020.10.24 |
[Java] JCF(Java Collection Framework) - Collection / Map (0) | 2020.10.16 |
[Java] Swing - CardLayout (창 넘어가기) (0) | 2020.10.14 |
[Java] Swing 간단한 예제 (WindowBuilder) (0) | 2020.10.09 |