꾸준히 안타치기
예외처리를 위해 사용되는 Try catch문 본문
예외처리란? 예외(일반적인 규칙에서 벗어남) 처리 -> 자바에서의 예외란 오류를 뜻함
예외처리란? 오류 처리를 뜻함
오류란(이치에 어긋난것)-> 프로그램상에서 오류는== 에러
사용하는 이유는 미리 오류를 대비하고, 비정상적인 종료를 막기위해서 사용
1. 특정 메소드는 실패할 경우가 있다.
2. 인터넷이 끊겼거나, 사용자의 입력값이 이상할때 등을 대비
3. 실패시에 자연스럽게 대처하는 코드를 만들어준다.
try선언에는 3종류가 있다.
http://www.tcpschool.com/java/java_exception_intro
catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요는 없다.
따라서 사용할 수 있는 모든 적합한 try 구문은 다음과 같습니다.
- try...catch
- try...finally
- try...catch...finally
다른 제어문과는 달리 예외 처리문은 중괄호({})를 생략할 수 없습니다.
- try : - 해보다. 시험하다.
- catch: 잡다, 걸리다.함정
try{
메서드();
예외가 발생할 가능성이 있는 코드들 작성 / 오류발생시 !
} catch(예외 클래스 e){
예외를 처리할 문장 작성 1
예외를 처리할 문장 작성 2 예외처리하고 / 예외X 시에는 캐치문 바깥으로
}fianally{
try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.
반드시 실행되어야 하는 메소드
}
예외가 발생하지 않으면, catch문 실행안됨
참고자료
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/try...catch
예외 구문 | 이유 |
ArithmeticException | 정수를 0으로 나눌경우 발생 |
ArrayIndexOutOfBoundsExcetion | 배열의 범위를 벗어난 index를 접근할 시 발생 |
ClassCastExcetion | 변환할 수 없는 타입으로 객체를 반환 시 발생 |
NullPointException | 존재하지 않는 레퍼런스를 참조할때 발생 |
IllegalArgumentException | 잘못된 인자를 전달 할 때 발생 |
IOException | 입출력 동작 실패 또는 인터럽트 시 발생 |
OutOfMemoryException | 메모리가 부족한 경우 발생 |
NumberFormatException | 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 |
NullPointException - 객체 참조가 없는 상태. 참조된 객체가 없는데 사용하려 하니 에러가 남
NumberFormatException - 문자열> 숫자타입으로 바꿀때 발생 / 숫자타입으로 변경할수 없는 문자를 치환하려고하면 발생
ClassCastExcetion - 타입변환은 상위클래스와 하위클래스간에 발생, 구현클래스와 인터페이스간에도 발생하는데, 이런관계가 아니면 다른클래스로 타입변활을 할수 없음. 억지로 타입을 변환시킬때 발생
정상 실행
try{
예외 처리하기 원하는 실행 코드 / 오류 없을때 ------->fianally 실행
throw new Exception(); 강제로 에러를 출력함
} catch(exception_var){ - catch 블록과 관련된 예외 객체를 담기 위한 식별자
try 블록에서 오류가 발생했을 때 실행될 코드 1
오류메세지 전달(ex :1000을 넘는 값을 입력하셨습니다! get Message를 통해서 불러오면 좋다.
e.printStackTrace(); 오류출력
throw e;
}fianally{
try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.
}
예외발생시
try{
예외가 발생할 가능성이 있는 코드들 작성 / 오류발생시 !
} catch(예외 클래스 e){
예외를 처리할 문장 작성 1
예외를 처리할 문장 작성 2 예외처리하고 / 예외X 시에는 캐치문 바깥으로
}fianally{
try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.
}
데이터를 주고 받을 때 많이 사용함, 그때 변수가 많이 사용되므로 오류도 많이 발생할수 있음
finally에서는 데이터와의 연결을 끊어주는 코드를 주로 삽입한다.
예외는 반드시 Throw해주어야 한다.
최상단 클래스는 제외한 나머지 클래스에서 예외처리를 만드시 Throw해주어야 한다.
그렇지않으면 Main에서 Exception을 전달 받지 못해서 예외를 인지 못할 수 있다.
( 예외를 던지는 부분 공부 더 필요 )
예외 발생 및 회피
런타임 에서( 실행시 발생하는 오류)
에러 - 프로그램 코드에 의해서 수습될수 없는 심각한오류
예외- 수습될수 있는 다소 미약한 오류 / 예외는 처리해야 한다.
자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있습니다.
Exception e = new Exception("오류메시지");
...
throw e;
오류가 발생시
throw new 권한없음 예외();를 --------> 오류처리를 받는 프로그램안의 try에게 던진다.
'CS' 카테고리의 다른 글
CS 지식 링크 (0) | 2022.03.25 |
---|---|
API와 라이브러리, SDK (0) | 2022.01.19 |
동시성 프로그래밍과 비동기 프로그래밍 (0) | 2021.12.24 |
객체 지행 프로그래밍 패러다임 / 객체지향 디자인패턴 (0) | 2021.12.21 |
동기와 비동기 (0) | 2021.08.22 |