TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.
예외
시스템 에러를 제외한 컴파일에러, 런타임에러, 논리에러와 같은 에러를 "예외" 라고 한다.
에러 종류
시스템 에러 |
컴퓨터의 오작동으로 발생하는 에러 |
소스코드로 해결되지 않는다. |
컴파일 에러 |
소스코드의 문법상 문제 |
매번 컴파일이 진행되기때문에 빨간줄로 에러를 바로 알려준다. |
런타임 에러 |
코드상 문제는 없지만 프로그램 실행시 발생하는 에러 |
사용자의 실수일 수도, 개발자의 실수일 수도 있다. |
논리에러 |
코드상의 문법적인 오류도 실행시 문제도 없지만 발생 |
프로그램 의도와 맞지 않는 논리적인 문제이다. |
예외처리
이러한 예외들이 발생할 것을 대비해서 "발생시 실행할 내용들을 미리 정의"해 두는 것
예외처리방법
1) try ~ catch 문을 이용
2) throws를 이용 (떠넘기기 == 위임)
3) try ~ with ~ resource 이용
예외들은 크게 CheckedException과 UnCheckedException으로 나뉜다.
CheckedException
반드시 예외처리를 해줘야하는 예외로
언제 어디서 예외가 발생할지 예측이 불가하기에 미리 예외처리 구문을 작성해두어야 한다.
주로 외부 매개체와 입출력을 할 떄 발생한다.
UnCheckedException(RuntimeException)
프로그램 실행시 발생되는 예측가능한 예외로
문법적으로 문제가 되지는 않기때문에 예외처리를 할 필요가 없다.
대표적인 RuntimeException
IndexOutOfBoundsException |
잘못된 인덱스 값으로 접근했을때 발생되는 예외 => 개발자의 실수 |
ClassCastException |
허용할 수 없는 형변환이 진행됐을 경우 발생되ㅏ는 예외 => 개발자의 실수 |
NullPointerException |
레퍼런스가 아직 null임에도 불구하고 접근했을때 발생하는 예외 |
ArithmeticException |
나누기 연산에서 부모가 0인경우 발생되는 예외 |
NegativeArraySizeException |
배열크기를 지정하는 과정에 배열의 크기를 음수로 지정했을 경우 발생되는 예외 |
ArrayIndexOutOfBoundsException |
배열에 부적절한 인덱스로 접근했을때 발생되는 예외 |
예측이 가능한 경우엔 조건문으로 해결하고 예측이 불가한 경우엔 예외처리 구문으로 해결하는 것이 권장사항이다.
*if문으로 조건처리 == 애초에 예외 자체가 발생이 안되게끔 개발자가 소스코드로 핸들링하는 것(예외 처리아님)
*예외처리 구문 철 == 예외가 발생했을 때를 대비해서 그때 실행할 내용을 정의해 두는 것
try catch문
try {
실행할 구문
} catch (여러종류의Exception e){
예외라면 실행될 구문
}
'Java' 카테고리의 다른 글
[Java] 입출력 IO? Input/Output, 기반스트림과 보조스트림 (0) | 2021.01.28 |
---|---|
[Java] java.io.file 클래스를 가지고 파일 만들기 (0) | 2021.01.27 |
[Java] API? java.lang(Math클래스, String클래스, Java.util.Date) (0) | 2021.01.20 |
[Java] 추상메소드? 추상클래스와 추상메소드 (0) | 2021.01.19 |
[Java] 다형성? 업캐스팅과 다운캐스팅 그리고 instanceof 연산자 (0) | 2021.01.18 |
댓글