예외처리

·2022년 11월 14일
0

JAVA객체지향

목록 보기
3/4

에러(오류) : 프로그램이 오작동 또는 비정상적으로 종료 되는 심각한 문제

컴파일 에러: 컴파일시 발생하는 에러
런타임 에러: 프로그램 실행시 발생하는 에러
논리적 에러: 컴파일도, 실행도 되지만 의도와 다른 결과를 발생시키는 에러

예외 : 발생하더라도 경미해서 수습이 가능한 문제

  • 예외 클래스

    1. Exception : 최고 조상 예외. 외적인 요소로 발생. 자손=>checked예외
    2. RuntimeException : 프로그래머의 실수로 발생. 자손=>unchecked예외

  • 예외처리 : 예외가 발생했을 때 이를 적절하게 처리함

    [형식1] try-catch문

    catch블럭은 여러개가 올 수 있음.
    단 조상 예외는 자손의 예외보다 먼저 올 수 없다.

    try{
    /*예외가 발생할 수도 있는 문장;*/
    }catch(/*예외타입 변수*/){
    /*예외 발생시 수행할 문장*/
    }finally{
    /*예외와 상관 없이 무조건 수행시킬 문장*/
    }

    [형식2] 메소드에 예외선언 throws

    여러개의 예외를 throws로 한번에 처리할 수 있음.
    클래스의 재사용성을 높임

    main 메소드
    .
    .
    public static void 메소드(변수) throws /*예외1,예외2,예외3....*/{
    	/*구현부 작성*/
    }
  • 주요 메소드

    1. printStackTrace(): 호출스택에 있었던 메서드 정보와 예외 메시지를 출력

    2. getMessage(): 해당 예외클래스에서 저장된 메시지 리턴

  • 예외 강제로 발생시키기(throw)

    ->논리적인 오류가 발생했을 때 조건을 걸어서 강제로 예외를 발생시킬 수 있음
    ->메소드 예외선언 throws와 혼동하지 않도록 주의

    1. new를 사용해 예외클래스의 객체를 만듦
    2. throw를 사용해 예외를 발생시킨다.
    Exception e = new Exception("error!");
    throw e;
  • 사용자정의 예외

    프로그래머가 예외를 직접 정의하여 사용할 수 있다.
    1.조상 예외를 상속받는 클래스를 만듦
    2.생성자를 만들어 조상 클래스의 생성자 호출(super())
    3.getMessage()로 리턴을 해주기 위해 오버라이딩 해주어야 함.

    1. 객체로 불러와서 예외 발생 시킴
    class MakeException extends Exception{
    	public MakeException(String errMsg){
    		super(errMsg);    
        }
        @Override
        public String getMessage(){
        	return "에러: "+super.getMessage();
        }
    } 
profile
웹개발입문자

0개의 댓글