티스토리 뷰
목표
자바의 예외 처리에 대해 학습하세요.
학습할 것 (필수)
- 자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
- 자바가 제공하는 예외 계층 구조
- Exception과 Error의 차이는?
- RuntimeException과 RE가 아닌 것의 차이는?
자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
try - try블랙 내에서 에러가 발생한 경우 해당 에러와 일치하는 catch문이 있으면 해당 catch문을 실행한다.
public static void main(String[] args) throws Exception {
System.out.println("start");
try {
System.out.println(0 / 0); // 오류 발생
System.out.println("middle");
} catch (ArithmeticException e) {
System.out.println("end");
}
}
0/0을 시행하여 ArithmeticException이 발생했다.
이럴 경우 try 내에서 에러가 발생한 부분에서 catch로 바로 넘어간다.
public static void main(String[] args) throws Exception {
System.out.println("start");
try {
System.out.println(0 / 0);
System.out.println("middle");
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
}
}
catch (ArithmeticException e) 여기서 e의 의미는 무엇인지 궁금해져서 알아봤다.
e는 myException의 줄임말로 사용자가 커스텀하여 사용 가능하다.
또한 e는 객체로 사용할 수 있는데 아래와 같이 e.getMessage(), 혹은 e로 조회하면 어떤 에러인지 알 수 있다.
또한 printStackTrace등 다양한 메서드를 지원하는데 이를 이용하여 에러 로그를 표시할 수 있다.
출력
Throw로 예외 발생시키기
void method() throws Exception
다음과 같이 메서드에 throws를 이용하여 예외발생 가능성을 미리 알릴 수 있다.
이를 사용하면 개발자들에게 에러에 대한 처리를 강요할 수 있기 때문에
오류를 예측 가능하게 하고, 견고한 프로그램 코드를 작성할 수 있다.
Finally 사용법
try {
System.out.println("start");
throw new Exception();
} catch (Exception e) {
System.out.println(e);
} finally {
System.out.println("end");
}
finally블럭 안에 있는 문장은 예외 발생 여부와 상관없이 항상 수행한다.
출력
Exception과 Error의 차이는?
Exception
- 정상적으로 프로그램 실행 중에 발생하며 예상할 수 있다.
- 예외의 예로는 IOException, SQLException, NullPointerException 및 IllegalArgumentException이 있다.
Error
- 정상적인 프로그램 실행 범위를 벗어나 예외적인 상태, 복구하기 어려운 심각한 문제를 의미한다.
- 코드에서 보이는 오류보다는 시스템 수준이나 프레임워크와 같은 상위 수준에서 처리된다.
- 오류의 예로는 OutOfMemoryError, StackOverflowError, LinkageError 및 VirtualMachineError가 있다.
- 리소스 고갈, 내부 JVM 오류와 같은 중요한 문제를 나타낸다.
Exception의 과정
자바가 제공하는 예외 계층 구조
RuntimeException 외 클래스는 컴파일 시 오류를 잡아준다. -> 치명적인 오류다.
- 반드시 예외처리를 해야 한다 -> (checked Exception 이라고도 한다)
RuntimeException(RE) 클래스는 컴파일 시 오류를 잡아주지 않는다 -> 치명적인 오류가 아니다.
- RE는 프로그래머가 실수로 발생하는 것 이기에 예외처리를 강제하지 않는다.
- 만약 강제한다면 배열을 사용할 때 NullpointException, IndexOutOfBoundException을 항상 예외로 가지고 다녀야 한다. -> (unchecked Exception 이라고도 한다)
Checked Exception
- 확인된 예외는 컴파일 타임에 컴파일러에 의해 확인됩니다.
- Exception 클래스의 하위 클래스입니다(RuntimeException 및 해당 하위 클래스 제외).
- 확인된 예외를 던질 수 있는 메서드는 try-catch 블록을 사용하여 예외를 처리하거나 throws 절을 사용하여 메서드 서명에서 선언해야 합니다.
- 확인된 예외는 일반적으로 선의의 호출자가 합리적으로 처리하거나 예상할 수 있는 조건에 사용됩니다.
- Java에서 확인된 예외의 예로는 IOException, SQLException, ClassNotFoundException 및 FileNotFoundException이 있습니다.
UnChecked Exception
- 확인되지 않은 예외는 컴파일 타임에 컴파일러에서 확인하지 않습니다.
- 이들은 RuntimeException 클래스 또는 그 하위 클래스의 하위 클래스입니다.
- 확인되지 않은 예외를 명시적으로 처리하거나 선언하는 데 메서드가 필요하지 않습니다.
- 확인되지 않은 예외는 일반적으로 논리적 오류, 잘못된 인수 또는 null 참조와 같은 프로그래밍 오류를 나타내는 조건에 사용됩니다.
- Java에서 확인되지 않은 예외의 예로는 NullPointerException, IllegalArgumentException, ArrayIndexOutOfBoundsException 및 ArithmeticException이 있습니다.
출처
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
자바의 정석 기초편 세트 (전2권) : 열린북스
[열린북스] 튼튼,꼼꼼, 안전하게 포장해서 발송 하겠습니다.
smartstore.naver.com
자바 예외 처리
자바의 예외 처리에 대해 정리합니다. > > 백기선님과 함께하는 자바 9주차 스터디 과정입니다. > > 학습할 내용은 다음과 같습니다. > - 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) > - 자
velog.io
'개발 > Java' 카테고리의 다른 글
[Java] 인터페이스 (0) | 2023.06.15 |
---|---|
[Java] 패키지 (0) | 2023.06.14 |
[Java] 상속 (0) | 2023.06.08 |
[Java] 클래스 (0) | 2023.06.07 |
[Java] 제어문 (0) | 2023.06.05 |