[Java 무작정 따라하기] 11. JAVA 패키지 및 예외처리 알아보기

 Java 무작정 따라하기 

11. JAVA 패키지 및 예외처리 알아보기

 

  • 사용자 패키지를 정의하고 정의된 패키지를 사용하여 프로그램을 만들어보자.
  • 예외종류를 알아보고 예외처리 코드를 작성해보자.

 

1.JAVA 패키지

 

패키지의 의미

  • 관련이 있는 클래스와 인터페이스를 묶어놓은 것을 패키지 라고 한다.
    • 클래스와 인터페이스는 패키지의 멤버로 존재하게 된다.
  • 전체적으로 계층(트리) 구조의 형태로 클래스 라이브러리 라고도 한다.
    • 패키지(계층구조이기 때문에 폴더와 유사하다) 단위로 계층적으로 분류된다.
  • 패키지의 용도
    • 쉽게 찾아 사용하기 위해 패키지를 사용한다.
    • 접근 제어를 위해 패키지를 사용한다.
    • 동일한 이름 및 유사한 기능을 재개발 하는것을 방지하기 위해 패키지를 사용한다.

 

시스템 패키지

  • Java가 제공하는 기본 클래스 라이브러리, 즉 기본적으로 JDK에 포함되어있는 라이브러이다.
    • JDK와 함께 설치된다.
  • 일반적으로 .jar 파일로 압축된 형태이다.

 

시스템 패키지의 사용

  • 가장 기본이 되는 최상위 패키지는 java이다.
    • 대부분의 시스템 패키지는 java로 시작된다.
  • Java 프로그램에서 상위 패키지와 하위 패키지의 구분은 도트(.)을 사용한다.
    • 예) Java.lang, java.nio,java.awt,java.util 등
    • java 언어의 기본 클래스는 java.lang 에 존재한다.
    • java.io.IOException과 같이 사용할 수 있다.

 

사용자 정의 패키지

  • 패키지 정의 문법은 아래와 같다.
  • package 구문은 소스 코드 맨 앞에 위치해야 한다.
  • 패키지 이름은 암묵적으로 소문자로 작명한다.
    • 하위 패키지의 경우 도트(.)으로 구분하여 작성한다.
  • 컴파일하면 패키지가 만들어지고 클래스 파일(.class)이 패키지에 저장되는 형태이다.
package thisis.package;

public class PackageClass{
	// 1개 이상의 클래스나 인터페이스를 정의한다.
}
  • 위 예제는 컴파일 결과로 PakageClass.class 파일이 만들어진다.
  • PakageClass.class는 thisis.package 패키지에 저장된다.
    • 컴파일 할 떄 -d 옵션을 사용하여 위치를 지정할 수 있다.
    • 예) - javac thisis.package -d D:\java\
    • 위 경우 D:\java\thisis\package\PakageClass.class 로 생성됨.

 

패키지의 사용방법 첫번째

  • 같은 패키지에 있거나 public인 외부의 클래스를 사용하려면
  • 패키지를 포함한 완전한 클래스 이름을 사용해야 한다.
  • 예)
graphics.Rectangle myRect = new graphics.Rectangle();
java.util.Scanner s = new java.util.Scanner(System.in);

 

패키지의 사용방법 두번째

  • import 문을 사용한다.
  • import 구문은 소스 코드 맨 앞에 위치한다.
    • package 구문이 있다면 그 다음에 위치한다.
  • 프로그램에서 패키지 이름을 생략하고 클래스나 인터페이스를 사용하고 싶을떄는 import 구문을 사용한다.
  • java 프로그램에서 iport java.lang.*; 구문은 자동으로 포함된다.

 

사용자 정의 클래스 찾기

  • 컴파일러는 사용자가 지정한 클래스를 환경 변수 CLASSPATH에 지정된 경로 또는 jar 파일에서 찾는다.
  • 환경변수 CLASSPATH
    • 컴파일러는 CLASSPATH에 지정된 경로에서 클래스를 찾는다.
    • CLASSPATH의 경로는 jar 파일을 포함할 수 있다.

 

2. Java 예외 및 예외처리

 

예외 및 에러

  • 에러 (Error) 는 심각한 오류로 인해 더 이상 실행이 불가한 것.
  • 예외 (Exception)은 경미한 오류로 복구가 가능한 것
  • 예외 발생
    • 메소드를 수행할 때 예외가 발생하면 예외 객체를 만들고 객체를 던진다.
      • 예외처리 코드가 없으면 메시지가 출력되면서 종료된다.
      • 예외처리 코드가 있으면 계속 수행된다.
    • 예외 객체
      • Exception 클래스 또는 하위 클래스로 표현된다.
      • 예외 객체는 예외 발생 정보를 가지고 있다.

 

예외처리 (Exception Handling)

  • 예외처리 예외가 발생했을 경우 이 상황을 바로잡아 계속수행하도록 한다.
  • 예외 발생은 Exception 객체를 throw 한다.
    • throw new MyException ();
  • throw된 예외 객체를 catch 하여 예외를 처리할 수 있다.
  • checkedException이 발생할 수 있는 경우에는 반드시 명시적인 예외처리가 필요하다.
  • RuntimeException의 경우, 예외 처리를 하지 않아도 된다.
    • 잘못 작성된 프로그램 때문에 발생되는 에러이기 때문.

 

예외 처리 방법

  • 직접 처리하는 방법
    • 던져진 예외 객체를 잡아서 처리하는 것으로
    • try-catch 구문 또는 try-catch-finally 구문을 사용하여 예외를 처리한다.
    • 일반 코드와 예외 처리가 분리되어 가독성이 좋아진다.
try{
// 예외발생 간으성이 있는 메소드의 호출 부분을
// try 블록에 둔다.
// 예외가 발생하면 try 블록은 즉시 종료됨
}
catch(Exception e){
// catch 블록이 여럿이면 가장 적합한
// catch블록만 실행된다.
// 예외가 발생하지 않으면 catch 블록은 실행x
}
catch(Exception e2){}
finally{
// finally 블록은생략가능
// 예외가 발생하던 안하던 try 블록이 종료되면
// 항상 실행된다.
// try블록 종료 후 할당 받아 사용했던
// 리소스를 원상복구 하기 위해 finally블록을 주로 사용
}
  • 간접 처리
    • 예외 발생 가능성이 있는 메소드의 선언에서 인자 다음에 throws 예외이름 을 사용한다.
    • 그 메소드를 호출하는 메소드에게 예외처리를 전달 또는 위임하는 의미이다.
    • 예외를 발생시킬수있는 메소드를 호출하는 쪽에 예외 처리를 위임하는 것.
      • 메소드의 선언에 예외 발생 가능성을 표시한다.
      • 메소드의 선언에서 괄호 다음에 throws 예외유형 을 사용하여 표시한다.
puglic char getInput() throws IOException{
	nInput = System.in.read(); // 예외 발생가능
}

 

 

내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)

오늘 하루도 즐거운 하루 보내세요!