자바공부하기 121

예외 처리

- try에서 발생된 예외를 처리하는 것

- catch block에서 처리됨

- Checked Exception

: 컴파일 시에 컴파일러가 처리기 여부를 검사

: 비교적 처리가 용이

 

- RuntimeException

: 발생 전에는 알 수가 없음

: 모든 발생 가능 상황에 대한 처리가 필요

* 따라서 다중 catch block을 사용함

: 비교적 처리가 어려운

 

예외 처리의 필요성

- Checked Exception

: 컴파일 불가

 

- RuntimeException

: 실행 중 예외 발생에 따른 위험

: 프로그램의 신뢰성과 안전성 향상

 

기본적인 예외 처리

- try

: 에러 발생이 가능한 코드가 위치함

 

- catch

: try에서 발생한 에러이벤트를 처리

: 다중 catch사용시에 발생할 예외 클래스의 상속을 고려

 

- finally

: 프로그램 종료 전에 무조건 실행

: java.io패키지와 java.sql패키지에서 자주 사용됨

 

 

 

자바공부하기 119

예외의 유형

 

- RuntimeException

* 실행 시에 발생하는 예외 이벤트(Event)

* 시스템 상의 문제로 발생

* 실행해 봐야 알 수 있음

- RuntimeException이외의 예외

* 컴파일 시에 발생하는 에러 이벤트

* 컴파일러가 문법적 오류로 간주해 발생

* 컴파일 시에 알 수 있음

* 자바 개발자들이 에러가 자주 발생하는 메서드에 throws 처리

컴파일 시의 예외 예제

 

- 컴파일 시에 예외 발생

: 자바 컴파일러가 CompileTimeException.java 파일을 캄파일 중에 URL클래스발견

: 클래스 라이브러리의 java.net팩키지의 URL.class를 로딩

: URL클래스의 객체 생성중에 throws로 MalformedURLException의 예외 처리가 미뤄진 것을 발견

: URL클래스의 객체를 생성하려는 CompileTimeException.java파일에 예외 처리가 안된 것을 확인한 후 예외 발생

 

 

 

JAVA공부하기 118

예외 클래스 정리

 

RuntimeException의 하부에 정의된 예외 클래스들

 

 

예외란

 

1. 실행 시에 발생하는 에러 이벤트

2. try block에서 발생

3. 클래스의 형태로 표현됨

4. 발생하는 이벤트는 객체가 됨

5. Exception 클래스를 상속 받아 새로운 예외 클래스 생성 가능

 

 

JAVA공부하기 117.

예외(Exception)

 

예외의 분류

- 컴파일 시의 사전 검사 여부

: Unchecked Exception : 컴파일러가 예외 처리 여부를 검사하지 않음

* 시스템 정의 예외

* Error와 RuntimeException

 

: Checked Exception : 컴파일러가 예외 처리 여부를 검사함

* 사용자 정의 예외( 자바 개발자가 클래스 라이브러리에 정의)

* RuntimeException 이외의 예외

 

: 예외의 복원 가능 여부

* Error : 불가능(java.lang.Error의 하부 클래스로 선언됨)

* Exception : 가능(java,lang.Exception의 하부 클래스로 선언됨)

 

- 자바 클래스 라이브러리에 정의된 예외 클래스들의 상속도

 

 

 

JAVA공부하기 116

익명(anonymous) 클래스

- 의미적으로는 지역 클래스와 동일하나 이름이 없다는 특징이 있다.

 

앞의 예에서 지역 클래스 Command는 getRunnable 메소드 내에서 단 한번 참조되는데도 불구하고 이를 위해서 완전한 클래스를 작성하고, 이로부터 객체를 생성하는 2단계가 필요

 

- 이 두 단계를 하나의 문법으로 통합

 

- new 기능의 확장

: 후속하는 명칭이 클래스인 경우 익명 클래스는 그 클래스의 서브 클래스

: 인터페이스인 경우 그 인터페이스를 구현하는 클래스가 된다.

: 인터페이스를 구현하는 클래스는 항상 Object의 서브클래스

 

- 익명클래스는 생성자 정의 못함

: 명칭이 없음

 

익명 클래스 예제

 

 

 

JAVA공부하기 115

지역클래스

 

코드 블록 내부에 지역적으로 선언된 클래스

- 지역 클래스는 그들이 정의된 코드 블록 내부에서만 가시적이므로 블록 외부에서는 참조할 수 없다.

 

- 그들이 정의된 코드 블록 외부에서 final로 선언된 모든 지역 변수와 인수를 사용할 수 있다.

이를 위해서 자바에서는 지역변수와 인수를 final로 선언할 수 있는 기능이 있다.

 

- 어떠한 static 멤버도 가질 수 없고, 맴버 클래스와는 달리 지역 클래스에는 접근 지정자를 부여할 수 없다.

 

앞에서 제시했던 Enumerator멤버 클래스를 지역 클래스로 재 작성

- 코드의 명확성 개선

 

지역 클래스 예제

 

 

JAVA공부하기 112.

중첩된 최상위 클래스

 

- 중첩된 최상위 클래스는 일반적인 패키지 멤버 클래스와 유사하나 단지 구성의 편리성을 위해서 다른 클래스나 인터페이스에 포함된 것

: 다른 클래스 내에 정의된 클래스, 인터페이스

: 항상 static으로 선언

: 가독성 증가

: 서로의 private필드와 메서드에 접근 가능

 

- 최상위 클래스나 인터페이스에만 포함될 수 있고 다른 내부 클래스에는 포함될 수 없다.

 

 중첩된 최상위 클래스 예제

 

 

JAVA공부하기 109.

instanceof

- Instanceof 키워드는 좌우의 객체, 클래스가 서로 같은 계층에 있지 않을 경우 컴파일 에러를 발생시킨다.

 

- 좌측의 객체가 우측의 클래스로 캐스팅 될 수 있으면 true리턴

 

 

//InstanceofTest.java

class Element {int atomicNumber;}

class Point {int x, y;}

class InstanceofTest {

public static void main(String[] args) {

point p = new Point();

Element e = new Element();

if (e instanceof Point) { // compile-time error

System.out.println("I get your point!");

p=(point)e;    // compile-time error

}

}

 

 

 

+ Recent posts