Software Engineering/Java & JSP

[Java] 제6장 패키지와 예외처리

iseop 2023. 4. 30. 19:16

패키지(Package)

  • 정의: 관련있는 타입(클래스, 인터페이스)들의 묶음
  • 목적: 이름 충돌 방지, 접근 제어, 필요한 타입을 찾기 쉽게 분류하기 위함
  • Java 기본 API 또한 계층적 패키지로 구성된다.
  • 예를 들어, Java 기본 클래스들은 java.lang에, 입출력용 클래스들은 java.io에 모여 있다.
  • java.lang은 묵시적으로 import 되나, 다른 패키지의 클래스를 쓰려면 import java.io.* 처럼 해야 한다.
  • java.lang.String 클래스는 %JAVA_HOME%/jre/lib/rt.jar/java/lang/String.class에 존재한다.
  • 커스텀 패키지를 사용하려면 OS의 환경변수 CLASSPATH에 자신이 만든 패키지 위치를 지정해야 한다.

커스텀 패키지 만들기(package 구문)

  • CLASSPATH에 추가한 디렉터리로 이동한다.
  • 소스코드 맨 위에 package com.example.test 라고 쓴다.
  • 그리고 만들고 싶은 클래스나 인터페이스들을 작성한다.
  • 컴파일하면 %CLASSPATH%/com/example/test/ 경로에 class 파일들이 생긴다.

커스텀 패키지 사용하기(import 구문)

  • 소스코드 위에 import com.example.test.* 라고 쓴다.
  • 그러면 아까 만든 패키지 안에 들어있는 클래스들을 원래 이름 그대로 사용할 수 있다.

접근제어자(access modifiers) 관련 복습

  • 접근제어자를 생략하는 것을 '패키지 접근수준(package-private)'이라 한다.
  • 이는 같은 패키지 내 다른 클래스에서 접근할 수 있는 클래스임을 의미한다.

오류(java.lang.Error)

  • 프로그램 진행이 더 이상 불가한 것

예외(java.lang.Exception.*)

  • 예외처리를 통해 정상 상태로 복구 가능한 것
  • RuntimeException은 흔한 예외로, 프로그래머가 예외처리를 안 해도 컴파일 가능함.
  • 하위 예외들인 ArithmeticException, NullPointerException, IndexOutOfBoundsException 등은 예외처리 안 해도 컴파일 된다.
  • 나머지 예외들은 처리해 주어야 컴파일 가능하다.

예외처리

  • 예외가 발생하면 Exception 객체가 반환되는데, 이를 try-catch로 받아서 처리해야 한다.
  • try { 예외발생 가능한 코드; } catch (Exception e) { 적절한 처리; }
  • try-catch-finally도 있는데, finally 블록은 항상 실행된다.

예외전파

  • 예외가 발생할 가능성이 있는 메소드는 예외를 throw 할 수 있다.
  • public int getNumber() throws IOException { 코드; }

커스텀 예외

  • java.lang.Exception의 서브클래스를 구현한다.
  • if (조건) { throw new CustomException(); }