자바 이론# 예외 처리

codePark·2020년 5월 20일
0

Java-이론편

목록 보기
4/6

  1. 오류의 종류
    1-1. Compile-Time Error
    소스 상의 문법 에러, 컴파일시 발생
    1-2. Runtime-Error
    입력 값이 틀렸거나, 배열의 인덱스 범위를 벗어났거나, 계산식의 오류 등으로 인해 발생.
    1-3. Logical-Error
    문법상 문제가 없고, 런타임 에러도 발생하지 않지만 개발자의 의도대로 작동하지 않음.
    1-4. System-Error
    컴퓨터의 오작동으로 인한 에러, 소스 구문으로 해결 불가.
  2. Error와 Exception
    Error란 프로그램 수행시 치명적 상황이 발생한 것으로 소스상 해결이 불가능한 상태를 말하며, Exception(예외)란 오류와 다르게 적절한 코드에 의해서 수습될 수 있는 미약한 오류를 말한다. Exception에러가 발생하는 경우엔 개발자가 예외 발생 상황을 예측해서 미리 예외처리 코드를 작성할 수 있다. 이를 통해 예외 상황이 발생된 경우의 처리 로직을 만들어 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있게 된다.
    ex.
    2-1. NullPointerException
    2-2. ArithmeticException
    2-3. IOException
  3. Exception(예외)의 종류
    Runtime Exception의 후손인 경우 Unchecked Exception, 즉 컴파일 시에는 에러가 있음을 알 수 없고 실행을 해야 알 수 있는 경우이다. 그에 반해 IOException, EOFException, FileNotFoundException 같은 경우 실행을 하지 않아도 에러가 있음을 알 수 있다. (checked exception)
  4. RuntimeException
    Unchecked Exception, 즉 컴파일 당시에는 버그가 있음을 알 수 없고 코드를 실행했을 때 알게 되는 예외이다. 주로 개발자이 부주의로 인한 버그인 경우가 많기 때문에 Exception 처리보다는 코드를 수정해야 하는 경우가 많아 예외 처리가 강제화 되지 않는다.
  5. RuntimeException 후손 클래스
    5-1. ArithmeticException
    5-2. NullPointerException
    5-3. NegativeArraySizeException
    5-4. ArrayIndexOutOfBoundException
    5-5. ClassCaseException
    5-6. InputMismatchException
  6. Exception 처리 방법
    6-1. Exception 처리를 호출한 메소드에게 위임 (throws)
    메소드 선언시 throws ExceptionName 문을 추가하여 호출한 상위 메소드에게 처리를 위임하여 해결한다. 계속적으로 위임하면 메인 메소드까지 위임하게 되고, 메인 메소드까지 가서도 예외 처리가 되지 않는 경우 JVM이 비정상 종료된다.
    6-2. Exception을 발생한 곳에서 직접 처리
    try~catch문을 이용하여 예외를 처리한다. 또한 try~catch 문은
    try: exception이 발생할 가능성이 있는 코드를 try구문에 기술한다.
    catch: try 구문에서 exception 발생시 해당하는 exception에 대한 처리를 기술한다. 여러 개의 exception 처리가 가능하나, exception 간의 상속 관계를 고려해야 한다.
    finally: exception 발생 여부와 관계 없이, 꼭 처리해야 하는 logic은 finally 안에 구현한다. 중간에 return 문을 만나도 finally 구문은 실행되나, System.exit(0)을 만나면 무조건 프로그램을 종료한다. 주로 java.io, java.sql 패키지의 메소드 처리시 이용한다.
     
profile
아! 응애에요!

0개의 댓글