JAVA프로그래밍 및 실습I 과제#7예외처리 조사 및 사용하기

2025. 5. 17. 19:40·컴퓨터공학과/Java 1 & 2

8. exception 예외클래스 5개이상 조사하고 정리

예외 3개이상 발생시키고 try-catch 문장 작성하기.

예외와 오류

에러 : 대부분 문법오류, 컴파일 오류. ... 컴파일 시 발견된다.

예외(exception): 런타임에러, 실행중 에러. 컴파일은 통과하나 실행 도중 오류 발생.컴파일은 통과하지만 실행 도중에 오류가 발생함. 예외발생시 프로그램은 종료되나, 예외 잡아 처리과정하면 정상실행상태 돌아가기가능.

예외발생 -> 자바플랫폼이 인지 ->응용프로그램에 전달하여 처리하도록 유도. 

자바의 exception 클래스/서브클래스 사용하여 해결!

  • 일반 예외 (컴파일체크,) : 반드시 작성해야한다. 예외처리 코드가 없으면 컴파일 오류가 발생하기때문
  • 실행 예외(Runtime Exception) 예외처리 코드를 생략하더라도 컴파일이 됨. 모든경우 예측불가하므로, 경험따라 코드 작성 요함
    • NullPointerException 객체 참조가 없는상태
      • null값 갖는 참조변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생한다.
    • ArrayIndexOutOfBoundsException 배열에서 인덱스 범위 초과하여 사용할 경우 발생
    • ClassCastException 올바르지 않은 캐스팅을 사용할경우

 

예외클래스 Try-Throw-Catch-Finally

Exception클래스의 생성자(2)

  • Exception(Srting s) : 메시지로 Exception 객체를 생성
  • Exception() : "널(NULL)문자열" 로 Exception객체를 생성
  • 발생한 Exception 정보를 알아오는 메소드 : String getMessage() << 객체에 저장된 문자열/널(null)을 반환

Exception계층

Object

Throwable

  • Exception
  • Error
    • RuntimeException
      • 기타예외들... (실행예외들) 아래는 예외 클래스 조사
      • ArithmeticException : 산술 연산에서 오류가 발생했을 때
        (0으로 나누기 등)
      • NullPointerException : null 값을 참조하려고 할 때.
        String s = null; s.length(); → null인 객체를 사용하려 할 때
      • IndexOutOfBoundsException : 배열이나 리스트 등의 인덱스가 범위를 벗어났을 때.
        int[] arr = new int[3]; arr[5] = 10;
      • ClassNotFoundException : 클래스 로더가 해당 이름의 클래스를 찾지 못했을 때 (주로 리플렉션 등에서).
        Class.forName("com.unknown.ClassName");
      • IOException : 입출력 작업 중 발생하는 일반적인 예외의 상위 클래스.
        파일을 읽거나 쓸 때 오류가 발생하면 IOException이 던져짐
      • FileNotFoundException : 정한 파일이 존재하지 않을 때 (IOException의 하위 클래스).
        FileReader reader = new FileReader("no-file.txt");
      • EOFException(End of File Exception) : 입력 스트림에서 더 이상 읽을 수 없을 때 (끝에 도달했을 때)
        ObjectInputStream으로 객체를 읽는 도중 EOF에 도달하면 발생
      • IllegalArgumentException : 메서드에 부적절하거나 유효하지 않은 인수를 전달했을 때.
        Thread.sleep(-1000); → 음수값은 허용되지 않음
      • ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 접근 시 발생
      • OutOfMemoryError : 메모리가 부족한경우 발생
      • NumberFormatException : 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환 시 발생
      • InputMismatchException : Scanner클래스의 nextInt를 호출하여 정수를 입력받고자 하였으나, 사용자가 'a' 등과 같이 문자를 입력한경우.

예외 발생 시 : 

  • 전달(throw) : 호출된 곳으로 전달한다(돌린다)
  • 잡기(catch) : 발생한 위치에서 직접 잡는다

예외처리코드 

try - (throw) - catch - finally 블록을 이용해 예외처리코드를 작성한다.

  • try : 예상되는 문제가 있을것같은 코드를 try 블록으로 설정
  • catch : Exception객체가 전달될 때(throw), 제어가 해당 catch블록으로 이동. 
    캐치 블록은 예외별로 여러개 존재가능. 최상위 예외는 가장 마지막에 위치시킨다.
  • finally 블록: 예외 발생과 전달throw 여부에 관계없이 항상 실행되는 코드 블록. (생략가능), 마무리하는역할 
    의미있는 값을 전달하도록 하지 않는다.

Throws : 직접 잡아 처리하는 catch()와 달리, 예외를 호출한 곳으로 전달만 한다. 예외를 떠넘기기라고도 함.
FileNotFoundException이 Exception과 IOException의 하위클래스이기 때문에(is-a) 하단의 상위클래스로 대체되어 사용될수 있다.

  • catch(FileNotFoundException e) :아래 두개보다 더 많은 정보를 제공해줌.
  • catch(IOException e)
  • catch(Exception e)

즉, 예외를 전달할 때에는 최대한 구체적으로 전달하는 것이 좋다.

예외 종류에 따른 처리 코드

사용자 정의 예외 클래스 선언 : 자바 표준 API에서 제공하지 않는 얘외는 개발자가 만들어 사용 가능 like 애플리케이션 서비스

방법: Exception클래스(일반예외, 컴파일예외)나 RuntimeException(실행예외) 클래스를 상속한다!

public class XXXException extends[ Exception| RuntimeException] {
	public XXXException(){}
    public XXXException(String message){
    	super(message);
        }


}

코드에서 예외를 발생시키고 잡거나 던진다.

예외 정보 얻기

getMessage() : 예외를 발생시킬 때 생성자 매개값으로 메시지를 리턴
전달된 메시지는 catch에서 활용. 

printStackTrace() :  예외발생코드를 추적한 내용을 모두 콘솔에 출력 프로그램을 테스트하면서 오류를 찾을 때 유용하게 활용.

정리: 예외처리의 구조

 

try{
	//모든 조건을 if then else로 체크하기 어렵거나, 문제가 발생할 수 있는 의심스러운 코드
	
}catch{
	//처리코드

}catch{
	//처리코드

}
...

}catch(Exception e){
	// catch코드의 마지막에는 가장 추상적인 클래스인 Exception을 써줌


}finally{
	//예외 발생여부 관련없이 공통실행. 처리해야하는 마무리코드

}


코드 // 정상적으로예외처리 시 실행되는것

 

'컴퓨터공학과 > Java 1 & 2' 카테고리의 다른 글

Battle 과제 코드 수정 - 공격/힐링 모듈화 + 레벨업 모듈화  (0) 2025.05.30
Generic&Collection, Summary  (0) 2025.05.30
[문제해결] 이클립스 패키지탐색기에서 파일이 열리는 경우  (0) 2025.05.17
JAVA 프로그래밍 및 실습 I - [과제#6] String클래스 조사 및 사용하기(Summary포함)  (0) 2025.05.17
chap06-Inheritance-interface  (0) 2025.05.10
'컴퓨터공학과/Java 1 & 2' 카테고리의 다른 글
  • Battle 과제 코드 수정 - 공격/힐링 모듈화 + 레벨업 모듈화
  • Generic&Collection, Summary
  • [문제해결] 이클립스 패키지탐색기에서 파일이 열리는 경우
  • JAVA 프로그래밍 및 실습 I - [과제#6] String클래스 조사 및 사용하기(Summary포함)
sihyes
sihyes
24학번 컴퓨터공학과
  • sihyes
    시혜적으로개발
    sihyes
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • 단순 설정 (10)
      • 백엔드 공부(BE, AWS) (8)
        • 로그인&회원가입 (3)
        • 파일업로드&GPT (2)
      • 컴퓨터공학과 (51)
        • 운영체제 (0)
        • Artificial Intelligence (0)
        • Java 1 & 2 (23)
        • 컴퓨터네트워크 (3)
        • 모앱JavaScript (0)
        • Data structures (9)
        • 소프트웨어공학 (5)
        • 오픈SW플랫폼 제출용 (5)
        • Python - 문해프 (1)
      • 개인 프로젝트 (2)
        • 알바솔로몬 (1)
        • PLACO 프로젝트 (0)
      • 도서 공부(정리) (20)
        • 알고리즘 코딩 테스트 자바 편 (1)
        • SQL첫걸음 (8)
        • 코딩 자율학습 스프링 부트 3 자바 백엔드 개발 .. (6)
        • Do it! 지옥에서 온 문서 관리자 깃&깃허브 .. (5)
      • 개인공부정리페이지 (12)
        • 백준 & 프로그래머스 (3)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ㅇ
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
sihyes
JAVA프로그래밍 및 실습I 과제#7예외처리 조사 및 사용하기
상단으로

티스토리툴바