예외
에러:
개발자가 해결할 수 없는 치명적인 오류 > 컴퓨터 고장
예외:
개발자가 해결할 수 있는 오류
잘못된 코드 가 프로그램의 실행상태를 방해하지 못하게 하는것
예외가 발생하면 우회경로를 제공해주는 것 : 예외처리
예외의 종류
일반(검사형) 예외>실행오류예외 : 컴파일러가 미리 알려줌
강제성을 가짐
실행(비검사형) 예외>입출력오류예외 : 실행했을 때 디버그 발생
< 예외 처리
![](https://velog.velcdn.com/images/kgsong8020/post/ca634356-1d84-4163-a4ec-486237f077c1/image.png)
대표적인 실행 예외
대표적인 일반 예외
interruptedException
프로그램 실행중 예기치않게 발생하는 이벤트(방해)
현재 실행중인 프로세스를 중단시킴
>
우선순위가 높은 일을 먼저 해야할 때 인터럽트를 발생시키기도
예외 처리 방법
예외 잡아 처리하기
예외가 발생한 곳에서 직접 해결
![](https://velog.velcdn.com/images/kgsong8020/post/3322b005-a43c-4f1f-b7b4-98d79bab533a/image.png)
예외(예외 클래스)가 발생하면 핸들러 실행
getMessage 예외 발생 이유를 알려줌
toString 이유와 예외의 종류를 알려줌
printStackTrace 이유와 예외 종류와 위치를 알려줌
Resource : 컴퓨터 시스템에서 처리 가능한 데이터나 기능 제공하는 모든 것들
Ex) 파일,DB, 다른 h/w연결시 주고받는 것들
예외 발생 여부와 상관없이 저장하고 종료
예외 떠넘기기
호출한 곳에서 직접 해결
메서드에서 발생한 예외를 내부에서 처리하기가 부담스러울 때는 throw키워드를 사용해 예외를 상위코드 블록으로 넘김
사용방법
실행중인 프로그램에 클래스, 메소드, 필드 등 정보를 조회하거나 객체를 생성하는 등의 /동적인 프로그램 기능을 제공/ : reflectiveOperationException
제네릭 타입:
무엇이든 담을 수 있다
어떤 값(여러개의 값)이 하나의 참조형이 아닌 여러 참조형을 사용할 수 있도록 프로그래밍 하는 것
참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 함
>안정적이고 정확하게 판단가능
타입 매개변수는 static 타입을 쓸 수 없음
클래스 생성시 실제 사용할 자료형을 지정
사용하는 이유
1. 타입 안정성 : 제네릭 타입은 컴파일 시점에서 타입 체크를 수행하기때문에
컴파일러가 미리 타입이 일치/ 불일치하는지 확인
2. 코드 재사용성 : 다양한 타입에 들어갈 값들을 한번에 관리
자료구조에서 다양한 데이터 타입 저장,처리하는 코드 작성 가능
3. 코드 가독성 : 타입변환(자료형변환) 코드가 줄어들기 때문에 가독성 증가
+런타임 오버헤드 감소(실행 시간 단축으로 성능 향상!)
제네릭 타입의 인자로 스테틱이나 퍼블릭을 사용하면 박싱되어 객체로 변환됨.
기초 타입과 박싱객체는 다른 객체가 되어 자동형변환 x
하여 다시 형변환을 시켜줘야하는데 그럼 성능이 저하됨
####제네릭 타입은 객체와 관련되어 있을 때 사용!####
그게 타당함.
제네릭 메소드를 호출할 때에는 구체적은 타입 생략 가능
<T extends> 클래스 사용
T 자료형의 범위 제한