exception이 일어나는 경우는 기본적으로는 운영체제에 정의가 되어있음.
ex_화재감지기: 연기가 나면 알려줌.raise
프로그램에서는 throw -catch.
exception handling
1.무엇이 예외인가
2.예외 감지/알림
3.처리
4.처리 후
예외처리 과정
예외정의-시스템,운영체제에서 함. / 사용자가 정의할 수도 있음
감지/알림-운영체제 / 사용자
처리- abort(운영체제) / 사용자가 처리-프로그램 계속or terminate
begin...a=b/c;...end;
c에서는 begin,end가 블락{}.
when() begin...end when()
java에서는 when이 catch임.catch에 handler가 들어감.
1. exception raised
2. exception to handler binding-exception type에 따라
3. continuation
4. 4가지 선택지
-에러난 문장
-에러난 문장 다음 문장.-unix
-다음 블락-java
-termination
ANSI:미국 표준 운영체제
그 c++ 이전에 Ada,clu등에서 운영체제에 에러 넘기는 것 있었음.
c++ try-catch-throw
predifined exception:운영체제에서 정의된 exception.
떄문에 c++에서는 predifine하지는 않음.
java의 exception class-유인물
object-throwable-exception or error.
arithmeticexception-divided by zero.
예제8-3 randon에서 0이 나옴.
explicit throw-implicit throw
java에서는 catch에 excception type을 명시해야 함.
예제8-2의 arithmeticException e.
모든 타입 다 받으려면 throwable 하던지 exception으로 타입 설정.
예외의 propagation
처리를 넘김. 자기가 처리를 못하면 자기를 호출한 함수에 처리를 넘김.
main-> A->B->C
예외의 propagation이 일어났다면 호출한 함수의 catch블록으로 이동함.
정상적인 호출(예외처리를 이미 함)이라면 호출한 함수의 다음 문장으로 이동함.
thorow와 throws차이
throws는 내 실행 중에 예외가 발생할 수 있고,나는 처리 안하고 처리는 호출자에게 넘긴다는 뜻.
ex) c throws exception{...}