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(); // 예외 발생가능
}
내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)
오늘 하루도 즐거운 하루 보내세요!
'Language > Java' 카테고리의 다른 글
그래들 ( Gradle ) 에 대한 학습 - 그래들이란? / What is Gradle? (0) | 2022.05.27 |
---|---|
컴파일,링크, 빌드, 배포 개념 정리 / what is the Compile,Link,Build,Deploy? (0) | 2022.05.26 |
[Java 무작정 따라하기] 10. Java 람다식, 자바 람다식에 대해 알아보자 (0) | 2020.05.11 |
[Java 무작정 따라하기] 9. JAVA 제네릭, 자바 제네릭 클래스, 자바 제네릭 알아보기 (0) | 2020.05.11 |
[Java 무작정 따라하기] 8. Java 열거형 및 익명클래스 알아보기 (0) | 2020.04.28 |