14. 예외처리 및 제네릭

zza·2023년 9월 25일
0

Java

목록 보기
14/19

오류

  • 오류: 프로그래머가 해결 할 수 x
  • 예외: 프로그래머가 해결 할 수 o

예외

  • 검사형 예외 : checked-exception


+NullPointException

  • interrupt(방해) : 현재 실행중인 프로세스의 실행을 중단하고, 우선순위가 높은 작업에게 실행 기회를 주는 기능

예외 처리 방법

  • 두 가지 방법
    1. 예외 잡아 처리하기
    2. 예외 떠넘기기

예외 잡아 처리하기

  • try ~ catch 구문 이용

  • 예외 1, 2를 모두 처리하고 싶다면 catch 구문도 or로 연결해야 한다. 아니면 1만 처리하고 2는 지나친다.

  • 예외의 우선순위를 어떻게 정하는가도 중요하다.

  • printStackTrace( )가 어디서 예외가 발생했는지까지 알려주는, 제일 자세한 예외 알림 메서드.

  • try 구문에서 예외 발생하는 순간, catch문으로 넘어가므로 try구문 내의 예외가 발생한 코드 아래에 있는 코드들은 모두 실행되지 않는다.


-예외처리의 매개변수는 e 약속!

  • 자원 반환 : 파일 열었으면 닫아라. 파일의 통일성과 독립성을 위해.

예외 떠넘기기

  • throws 키워드 사용

문제

  1. 1
    :interruptedException만 일반 예외, 나머지는 실행 예외이다.
  1. 3
  1. o
  1. 예외
  1. 일반 예외, 검사형 예외
    : 반드시 처리해야 하는 예외

※chap9

제네릭 타입

  • 제네릭 : 포괄적인

  • 여러개의 자료형을 담은 객체를 생성할 수 있다.
    : 코드의 중복성을 막는다.

  • 타입에 상관없이 똑같은 메서드 기능을 사용하고 싶을 때 제네릭 사용한다.

  • 제네릭 타입에는 참조형 자료만 넣을 수 있다.
    기본 자료int 넣고싶다면 -> Integer 넣어야 한다.

-상속 관계

제약

  • 기본 자료형은 wrapper 타입 자료형으로 감싸서 사용한다.

상속 및 타입 한정

  • 상속 관계에 있는 T만 받도록 타입을 한정할 수 있다.

제네릭 메서드

  • 실선: 추상클래스
  • 점선: 인터페이스
  • 구현하지 않은 메서드 1개를 가졌다면, 인터페이스나 추상클래스 중 어떤 것으로 만들어도 상관없다.

문제

  1. x
    : 참조 타입만
  1. o
  1. <T> extends Comparable

정리

  • <?> = object : 싹 다 넣겠다.

연습문제

  1. 2
    : 예외에는 검사형과 런타임 두종류가 있고, 런타임의 자식 예외로 비검사형(실행) 예외가 있다.
  1. Exception 제일 마지막에
    :모든 예외의 부모이므로.
  1. x
    :number에 integer, double등이 속하기는 하지만 위 문제는 개별 클래스이므로 x
  1. ① T[ ] , ② T temp = array[a]

- 데이터 교환

int a = 3;
int b = 5;
int tmp = a; //임시 변수 선언
a = b;
b = tmp;

  1. 4
    :② 컴파일 에러->런타임 에러보다 안전하다
    ③ 아무 타입이나 다 받으므로 굳이 형변환 x

7."클래스를 찾을 수 없다."
"어이쿠!"
: class.forName(~) : class 내에 ~이름을 가진 클래스를 찾아달라

  1. "안녕!"
    : return 만나면 그 뒤의 기능은 실행하지 x
  1. Integer
    : ArrayList는 원래 제네릭 타입을 쓰고있다.
    < > 있잖아..
  1. ① < T > T , ② T [ ] a
    : < T > 제네릭 타입 쓰겠다 선언. T는 반환타입
    : return a.[ ] -> T타입 배열 a

프로그래밍 문제

profile
zza

0개의 댓글