try 블록 내부는 다양한 종류의 예외가 발생할 수 있다. 이 경우, 발생되는 예외 별로 예외처리 코드를 다르게 하려면 어떻게 하면 될까?
해답은 다중catch 블록을 작성하는 것이다.
주의할 점
상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 합니다
interger.parseint() : 뒤에나 반환 값이다.(오버 로딩)
매개변수랑 반환 유형만 잘 활용하면 쓸 수 있다.
String data1 스트링 배열에서 넘버 배열로 바꾸고
캐치 영역에는 넘버 안 적으면 오류 나니깐 이거 예외 처리해야 함
예) 10 a
10은 문자열
a 도 문자열
10은 숫자로 가능
a는 변경이 불가
그래서 오류가 나오고
그 오류를 해결하려면 (numberFormatException e) 이걸로 해야 함.
Exception이 모든 예외를 처리할 수 있는 이유는 예외 클래스들의 부모 클래스이기 때문입니다.
한 번만 선언되고 필요 없는 문장이면 와일드 문 밖에 넣어야 함
안에 있으면 한번 돌아가면 새롭게 생성되기 때문에
밖에 있는 게 더 좋은 거임
person p = new person(); 안에 넣으면 저장한 값이 날아가고 새롭게 만들어짐
그래서 잘 생각하고 넣어야 함
그래서 와일드 문 밖에 두는 게 좋음;
예외 떠넘기기
사용 키워드는 throws 예외 코드를 직접 처리하지 않고 메서드나 생성자를 호출한 곳으로 떠넘기는 코드이다.
메서드에서의 예외처리이다.
사용자가 특정한 것을 알고 정확히 사용해야 함
그러나 문제가 생길 경우 사용하는 사람한테 떠 넘겨주는 식이다.
메서드 뒤에 thows (exception 종류가 들어감)
예를 들면 메서드에 10이 들어오면
그레이팅[인덱스]에 10이 들어가고 오류가 뜨면 사용한 곳으로 넘기게 된다(호출한 곳으로(그레이팅으로))
메서드, 생성자에서 발생되는 예외를 호출부로 떠넘기는 키워드가 Throws입니다.
* throws구문이 붙어있는 메서드, 생성자를 호출할 때는 예외처리를 대신 진행해야 합니다.
*
* 즉, 예외처리를 강요할 때 사용합니다.
throws
어떤 파일은 프로그램 외부적인걸 다룰 수도 있고 정상 적으, 로 실행이 되면 안 되는 것들이 있다.
예외 처리할 때 메인으로 예외처리를 떠넘기게 되면 자바 vm 넘어가게 된다.
떠넘기기로 넘어가면 그 자리에서 메서드가 종료가 된다.
생성자 호출 구문 aaa오류 떠서 -> aaa호출 구문 넘어가가고 bbb() 오류 떠서 bbb호출 구문으로 넘어간다.
예외 강제 발생시키기
void형 return 키워드 써서 강제 종료가 가능 하지만 반환 유형이 있는 메서드는 return뒤에 값을 무조건 줘야 강제 종료임
반환 유형이 있는 메서드에서 잘못된 값이 있는 경우, 잘못된 값이 반드시 돌아가게 됨(return이 있어서)
그러면 잘못된 리턴이 있는 값에서 더 실행시키지 않고 직접 예외를 떠넘겨서 아래쪽 메서드를 진행 안시 키 기고 종료시킬 때
try catch 영역 안에서도 사용 가능
try {
} catch {
throw new Exception}으로 만들어 어디서든지 종료가 가능함;
getmessage() 예외가 만들어지면서 전달된, 메시지를 얻어오는 기능.
printstackTrace() - 예외 발생 코드를 추적해서 모두 콘솔에 출력하고 어디서 발생했는지 상세하게 출력해주는 프로그램이라 테스트하면서 오류를 쉽게 찾을수있따.
사용자 정의 예외(우리가 만들일이 없다)
Exception은 예외의 부모 클래스이다.