본문

160109P(토)

Java Chapter15 - 익셉션 클래스

 

익셉션(exception)
프로그램 실행중에 발생하는 에러

 

익셉션 객체(exception object)

자바 프로그램에서 익셉션은 객체로 표현

throw new Exception("재고가 부족합니다");

 

따라서 익셉션을 잡는 catch 절에서도 객체를 대입할 수 있는 변수로 잡아야 한다.

catch(Exception e) {

...

}

 

익셉션 클래스

익셉션을 만들 수 있는 클래스

java.lang.Throwable 의 클래스와 그 서브클래스(Exception, Error 등)만 익셉션 클래스

 

 

Exception과 서브클래스는 비교적 덜 심각한 익셉션

try-catch로 처리 가능

 

Error는 상대적으로 심각한 익셉션

try-catch로 잡기 힘들다.

 

checked exception

반드시 try-catch로 처리해야 한다.

RuntimeException과 서브클래스 이외의  Exception

SQLException도 checked exception

 

unchecked exception

try-catch로 처리 하지 않아도 된다.

RuntimeException과 서브클래스

 

getMessage 메소드

에러메세지 리턴

String str = e.getMessage();

 

printStackTrace 메소드

익셉션이 발생한 경로를 추적

e.printStackTrace();

 

완성된 프로그램에서는 사용하지 않고 개발단계에서 디버깅 목적으로만 사용한다.

 

익셉션 파라미터 변수(exception parameter)

catch절에서 익셉션을 받을 때 사용하는 변수

선언된 타입의 서브클래스 타입의 익셉션까지 잡을 수 있다.

 

ex)

catch(IOException e) {

...

}

FileNotFoundException까지도 잡을 수 있다.

 

catch문은 순서대로 처리된다.

 

커스텀 익셉션 클래스 생성

사용자 입맛에 맞는 익셉션 클래스 생성

 

class InvalidInputException extends Exception {

InvalidInputException() {

super("잘못된 입력입니다.");

}

}

 

클래스 이름은 Exception으로 끝나는게 좋다.

 

생성자는 반드시 필요하다.

 


 

Java Chapter14 - System 클래스

 

자바는 운영체제 상에서 직접 실행되는 것이 아니라 JVM위에서 실행되기 때문에 운영체제로부터 직접적인 영향은 없다.

하지만 자바가 운영체제와 전혀 무관하게 실행될 수 있다는 것은 아니다.

ex) 키보드 입력, 모니터 출력 등

 

System 클래스

운영체제와의 상호작용에 필요한 여러 기능들을 모아놓은 클래스

java.lang.System

 

모두 정적 필드와 메소드 이므로 객체를 만들지 않고 사용 가능

 

표준입출력

키보드 입력과 모니터 출력기능

 

System.in

표준입력(키보드) 입력을 받는데 사용

 

inputStream 클래스 타입

java.io.InputStream

바이트 스트림을 입력하기 때문에 한글입력 불가

따라서 InputStreamReader와 함께 사용해야 한다.

java.io.InputStreamReader

 

InputStreamReader reader = new InputStreamReader(System.in);

char ch = (char) reader.read();

파라미터 없이 read메소드를 호출하면 int 타입으로 리턴하기 때문에 캐스팅 필요

 

read 메소드는 IOException을 발생할 수 있기 때문에 try-catch문으로 감싸야 한다.

 

System.in은 Enter키를 눌렀을 때 한꺼번에 입력을 받지만 read()는 한글짜씩 읽는다.

줄단위 입력은 BufferedReader사용

InputStreamReader reader1 = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(reader1);

 

String str = br.readLine();

 

System.out

모니터 출력

PrintStream 클래스 타입

 

System.err

PrintStream 클래스 타입

에러 메세지를 모니터로 출력

System.err.println();

System.err.print();

System.err.printf();

 

환경변수 읽기

운영체제에 설정되어있는 환경변수 read

 

환경변수(environment variable)

운영체제 자체에 속하는 변수

프로그램의 실행 환경을 설정하는데 사용

 

환경변수의 값을 프로그램 안으로 읽어와서 사용

String str = System.getenv("path");

 

path

윈도우 또는 유닉스 계열의 환경변수

프로그램의 실행 경로명을 담는 역할

 

∴ 플랫폼마다 이름도 다르고 사용목적도 다르므로 환경변수보다 시스템 프로퍼티를 사용하는것이 적절하다.

 

시스템 프로퍼티 읽기

프로그램 환경모드를 프로퍼티 형태로 읽고 쓰는 기능

프로그램의 실행환경에 대한 여러가지 정보를 담는 역할

JVM이 자바 프로그램을 시작할 때 운영체제로부터 읽어와서 자동으로 설정

 

1. 설정되어있는 모든 시스템 프로퍼티 read

Properties props = System.getProperties();

props.list(System.out);

 

java.util.Properties

list()

Properties 객체에 있는 모든 프로퍼티를 출력 스트림 객체로 출력

 

2. 특정 시스템 프로퍼티 하나만 read

String str = System.getProperties("user.dir");

 

현재 시각 측정

시스템 시계로부터 현재 시작을 읽어오는 기능

long time = System.currentTimeMillis();

 

프로그램 시각을 그대로 가져오기 때문에 프로그램 실행 시간 측정에 사용된다.

 

프로그램 실행 관련 기능

프로그램 kill과 gc 관련 기능

 

System.exit(0);

메소드 안에서도 프로그램 종료 가능

System.exit(0);

정상종료

 

System.exit(1);

비정상 종료

 

System.gc();

gc(garbage collector)의 콜

즉시 실행된다는 보장은 없지만 가능한 빨리 실행되도록 스케줄 조정 제안

 

객체를 제거하기 전에 객체의 finalize 메소드를 호출

때로는 객체 제거가 목적이 아니라 finalize의 호출이 목적일 수 있다.

System.runFinalization();

즉시 호출한다는 보장은 없지만 빨리 호출되도록 요청하는 역할

 

보안설정 기능

자바 프로그램의 보안 관리자 설정

 

etc

배열의 효율적 복사 등

 

System.arraycopy(arr1, 10, arr2, 20, 5);

반복문을 사용하지 않더라도 배열을 복사 할 수 있다.

 

parameter

(원본 배열, 원본 항목의 시작 위치, 복사 대상 배열, 복사 대상 항목의 시작 위치, 복사할 항목 수)

 

 

 

'Programming > Java' 카테고리의 다른 글

160127P(수)  (0) 2016.01.27
160117P(일)  (0) 2016.01.17
160108P(금)  (0) 2016.01.09
160107P(목)  (0) 2016.01.07
160103P(일)  (0) 2016.01.04

공유

댓글