예외
예외는 여러분이 생각하는 자바의 예외 C#의 예외처리의 내용과 동일합니다.
예외는 두가지로 구분됩니다.
- 처리가능한 예외
- 처리 불가능한 예외
두가지에 대해 살펴 보도록 하겠습니다.
1. 처리가능한 예외
말 그대로 윈도우 자체에서 처리가능한 예외이다 .
대표적인 예로 자바의 예외처리에서 나오는 0으로 나눈 경우이다.
이런 경우 윈도우는 해당 예외처리 루틴을 발견하여 0으로 나눈 경우
처리해야하는 루틴을 실행한다.
인사이드에서는 서브 시스템의 디버거 포트에서 처리를 시도한다고 나와있다.
즉 디버거 포트가 처리가능한지를 알아보는 개념이라는 것을 알 수 있으며
해당 내역을 처리 가능한 경우 처리를 할 수 있는 예외 핸들러를 찾게 된다.
여기서 예외 핸들러를 찾는 경우 해당 예외 핸들러를 수행하여 예외를 처리하게 되는 것이다.
그리고 예외를 발생시킨 단계는 스택에 쌓이는데 스택에 쌓는 이유는
예외를 처리한 후 다음 단계를 실행시키기 위해서이다.
2. 처리 불가능한 예외
처리가능한 예외에서와 같은 루틴으로 실행되나
처리 불가능하여 예외 핸들러를 찾지 못한 경우 에러 이전으로 돌아가려는 동작만 일으킨다.
즉 디버거 포트에서 해당 예외를 처리할 핸들러를 발견하지 못한경우 지금까지의 실행 내역을
트랩하여 스택에 넣는데 이 행동은 위의 설명대로 예외처리 후 실행이 되어지게 하기 위해서이다.
디버거 포트에서도 찾지못한 경우 자주 본 디버거화면이 뜨게 되며 이에도 실패하면
커널은 스레드의 프로세스와 연관된 예외포트에 메시지를 보내고 프로그램은 닫히게 된다.
(왜냐하면 예외를 처리하지 못했으므로 다음이 진행될 수가 없다.)
위와같이 예외는 소프트웨어 개발자라면 쉽게 이해할 수 있는 부분이다.
OS는 예외 발생 시 해당 예외를 누가 처리를 할지를 연결하는 중개자의 역할을 하게 된다.
예외는 여러분이 생각하는 자바의 예외 C#의 예외처리의 내용과 동일합니다.
예외는 두가지로 구분됩니다.
- 처리가능한 예외
- 처리 불가능한 예외
두가지에 대해 살펴 보도록 하겠습니다.
1. 처리가능한 예외
말 그대로 윈도우 자체에서 처리가능한 예외이다 .
대표적인 예로 자바의 예외처리에서 나오는 0으로 나눈 경우이다.
이런 경우 윈도우는 해당 예외처리 루틴을 발견하여 0으로 나눈 경우
처리해야하는 루틴을 실행한다.
인사이드에서는 서브 시스템의 디버거 포트에서 처리를 시도한다고 나와있다.
즉 디버거 포트가 처리가능한지를 알아보는 개념이라는 것을 알 수 있으며
해당 내역을 처리 가능한 경우 처리를 할 수 있는 예외 핸들러를 찾게 된다.
여기서 예외 핸들러를 찾는 경우 해당 예외 핸들러를 수행하여 예외를 처리하게 되는 것이다.
그리고 예외를 발생시킨 단계는 스택에 쌓이는데 스택에 쌓는 이유는
예외를 처리한 후 다음 단계를 실행시키기 위해서이다.
2. 처리 불가능한 예외
처리가능한 예외에서와 같은 루틴으로 실행되나
처리 불가능하여 예외 핸들러를 찾지 못한 경우 에러 이전으로 돌아가려는 동작만 일으킨다.
즉 디버거 포트에서 해당 예외를 처리할 핸들러를 발견하지 못한경우 지금까지의 실행 내역을
트랩하여 스택에 넣는데 이 행동은 위의 설명대로 예외처리 후 실행이 되어지게 하기 위해서이다.
디버거 포트에서도 찾지못한 경우 자주 본 디버거화면이 뜨게 되며 이에도 실패하면
커널은 스레드의 프로세스와 연관된 예외포트에 메시지를 보내고 프로그램은 닫히게 된다.
(왜냐하면 예외를 처리하지 못했으므로 다음이 진행될 수가 없다.)
위와같이 예외는 소프트웨어 개발자라면 쉽게 이해할 수 있는 부분이다.
OS는 예외 발생 시 해당 예외를 누가 처리를 할지를 연결하는 중개자의 역할을 하게 된다.