
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68


목차
3장
4장
5장
6장
7장
8장
9장
4장
5장
6장
7장
8장
9장
본문내용
찾을 때까지의 모든 실행은 무시
- 예외 발생 가능성에 대한 명시(시스템 정의 예외, 프로그램정의 예외)
■ 시스템예외
- 프로그램의 부당한 실행으로 인하여 시스템에 의해 묵시적 발생
- 더 이상 프로그램의 실행을 지속할 수 없을 때
- 자바 시스템에 의해 자동적으로 생성
- Error와 RuntimeException 클래스로부터 확장된 예외
- IndexOutOfBoundsException :
- 배열, 스트링, 벡터 등과 같이 인덱스를 사용하는 객체에서 인덱스의 범위가 벗어날 때 발생- - ArrayStoreException : 배열의 원소에 잘못된 형의 객체를 배정하였을 때 발생
- NegativeArraySizeException : 배열의 크기를 음수로 지정하였을 때 발생-
- NullPointerException : null을 사용하여 객체를 참조할 때 발생
- SecurityException : 보안을 위반했을 때 보안 관리자(security manager)에 의해 발생
- IllegalMonitorStateException : 모니터(monitor)의 소유자가 아닌 스레드가 wait 또는 notify 메소드를 호출했을 때 발생
- 프로그래머에 의해 의도적으로 발생
- 발생한 예외에 대한 예외 처리기가 존재하는지 컴파일러에 의해 검사(예외처리기가 없으면 에러)
- Exception 클래스의 서브 클래스
11.2 예외가 처리기에 바인딩된다는 것은 무엇을 의미하는가?
- 프로그램의 예상되는 오류를 처리하기 위해 그 프로시저에 어떤 매개변수를 더 첨가하여 예상되는 오류를 만났을 때 약속된 값을 이 변수에 저장하여 변환한다. 변환 받은 프로시저가 이를 인식하고 비정상적인 일을 처리하는 과정이다. 또한 프로시저를 빠져나와 오류 처리 루틴으로 제어를 보냄으로써 정상적인 흐름을 파괴시킨다.
11.3 PL/I, Ada, C++, Java의 예외 처리기의 이름은 무엇인가?
PL/I : 시스템 제공 on condition(조건)만 사용 가능
Ada : Steelman Requirements - Ada의 예외 처리에 대한 명세
c++ : try 구성 복합문( 예외 발생) 과 다수의 catch 복합문( 예외 처리 루틴)
Java : 검사 예외(checked exception) : 예외 처리기의 존재 검사
11.4 c++에서 예외는 어떻게 명시적으로 발생되는가?
c++예외는 명시적인 throw 문에 의해 발생한다.
throw [expression];
대괄호는 식이 선택 사항을 명시하기 위해 사용된 메타 심벌이다. 피연산자가 없는 throw는 예외 처리기에서만 나타나며, 동일한 예외를 발생시키고자 할 때 사용한다.
11.5 c++에서 예외는 어떻게 처리기에 바인딩 되는가?
try {
-- 예외가 발생하기를 기대하는 코드
}
catch(formal parameter) {
-- 예외 처리기 몸체부
}
...
catch(formal parameter) {
-- 예외 처리기 몸체부
c++에서 예외처리의 바인딩은 예외 발생 코드가 포함된 복합문과 이 복합문에 있달아 예외 처리기인 복합문들이 나타났을 경우 바인딩 된다.
11.6 c++에서 임의의 예외를 처리하는 예외 처리기는 어떻게 작성되는가?
{ try {
if (index < 0 || index > 9)
throw (new_grade) ;
freq [index]++;
} //* 내부 try 문 끝
catch (int grade) { // 첨자 오류 처리기
if (grade == 100)
freq [9]++;
else
cout << \" Error -- new grade : \" << grade
<< \" is out of range \" << end1;
} // catch(int grade) 끝
} // 내부 try 문과 catch문 쌍 끝
} // while 문 끝
} //외부 try 문 끝
반복문의 제어식에서 사용된 cin 식을 사용함으로서 쉬운 처리와 첨자 범위를 벗어난 예외는 if 문으로 첨자에 관한 사용 범위를 검증하여 예외를 발생시키기보다, 첨자 연산을 중복정의해서 처리한다.
11.7 c++에서 예외 처리기가 실행을 끝냈을 때, 실행 제어는 어디로 가는가?
예외 처리기의 실행이 완료된 이후, 제어는 이 예외 처리가 속해 있는 일련의 얘외 처리기들 다음에 있는 첫 문장으로 이동 된다.
11.8 c++는 사용자의 예외 처리기에서 내장 예외를 포함하는가?
C++ 예외처리는 try, catch, throw라는 세 개의 키워드를 사용한다
try
예외 발생을 감시하려는 문장들을 try 블록 내에 둠
throw
예외( 에러) 가 try 블록 내에서 발생한다면, throw 를 사용해서 예외를 던짐
catch
catch 를 사용해서 예외를 잡아 처리함
11.9 c++의 throw 명세와 java의 throws절 간에 차이점은 무엇인가?
throw 절을 포함하지 않는 c++ 프로그램 단위는 독자에게 알 수 없는 예외를 발생할 수 있다. 그러므로 java 메소드의 throws 머리로부터 발생 할 수 있지만 처리하지 않는 예외를 알 수 있다.
11.2 c++의 예외 처리와 ada의 예외 처리를 비교하라, 여러분의 생각에 어느 족이 더 적용성이 있는가? 또한 어떤 언어가 더 신뢰성이 있는 프로그램을 작성할 수 있는가?
-ada는 예외가 발생될 때 매개변수를 예외 처리 루틴에 전달 할 수 없다.
-ada는 발생된 예외가 예외 처리 루틴을 찾는데 동적 연결의 끝가지 전파된다.
c++의 예외처리는 ada의 일부를 근간으로 하기 때문에 c++과 마찬가지로 사용자가 정의하는 예외처리를 프로그래머가 적당한 자리에 예외 처리 루틴을 기술하지 못할시 예측하지 못한 모듈에서 예외가 처리되어 디버깅 환경이 어렵게 된다.
11.3 c++의 예외 처리와 java의 예외 처리를 비교하라, 여러분의 생각에 어느 족이 더 적용성이 있는가? 또한 어떤 언어가 더 신뢰성이 있는 프로그램을 작성할 수 있는가?
- c++ 프로그램은 프로그램에서 정의되 또는 시스템에 의해서 정의된 임의의 자료형을 발생시킬 수 있다. java에서는 Throwable 또는 Throwable의 후손 클래
- 예외 발생 가능성에 대한 명시(시스템 정의 예외, 프로그램정의 예외)
■ 시스템예외
- 프로그램의 부당한 실행으로 인하여 시스템에 의해 묵시적 발생
- 더 이상 프로그램의 실행을 지속할 수 없을 때
- 자바 시스템에 의해 자동적으로 생성
- Error와 RuntimeException 클래스로부터 확장된 예외
- IndexOutOfBoundsException :
- 배열, 스트링, 벡터 등과 같이 인덱스를 사용하는 객체에서 인덱스의 범위가 벗어날 때 발생- - ArrayStoreException : 배열의 원소에 잘못된 형의 객체를 배정하였을 때 발생
- NegativeArraySizeException : 배열의 크기를 음수로 지정하였을 때 발생-
- NullPointerException : null을 사용하여 객체를 참조할 때 발생
- SecurityException : 보안을 위반했을 때 보안 관리자(security manager)에 의해 발생
- IllegalMonitorStateException : 모니터(monitor)의 소유자가 아닌 스레드가 wait 또는 notify 메소드를 호출했을 때 발생
- 프로그래머에 의해 의도적으로 발생
- 발생한 예외에 대한 예외 처리기가 존재하는지 컴파일러에 의해 검사(예외처리기가 없으면 에러)
- Exception 클래스의 서브 클래스
11.2 예외가 처리기에 바인딩된다는 것은 무엇을 의미하는가?
- 프로그램의 예상되는 오류를 처리하기 위해 그 프로시저에 어떤 매개변수를 더 첨가하여 예상되는 오류를 만났을 때 약속된 값을 이 변수에 저장하여 변환한다. 변환 받은 프로시저가 이를 인식하고 비정상적인 일을 처리하는 과정이다. 또한 프로시저를 빠져나와 오류 처리 루틴으로 제어를 보냄으로써 정상적인 흐름을 파괴시킨다.
11.3 PL/I, Ada, C++, Java의 예외 처리기의 이름은 무엇인가?
PL/I : 시스템 제공 on condition(조건)만 사용 가능
Ada : Steelman Requirements - Ada의 예외 처리에 대한 명세
c++ : try 구성 복합문( 예외 발생) 과 다수의 catch 복합문( 예외 처리 루틴)
Java : 검사 예외(checked exception) : 예외 처리기의 존재 검사
11.4 c++에서 예외는 어떻게 명시적으로 발생되는가?
c++예외는 명시적인 throw 문에 의해 발생한다.
throw [expression];
대괄호는 식이 선택 사항을 명시하기 위해 사용된 메타 심벌이다. 피연산자가 없는 throw는 예외 처리기에서만 나타나며, 동일한 예외를 발생시키고자 할 때 사용한다.
11.5 c++에서 예외는 어떻게 처리기에 바인딩 되는가?
try {
-- 예외가 발생하기를 기대하는 코드
}
catch(formal parameter) {
-- 예외 처리기 몸체부
}
...
catch(formal parameter) {
-- 예외 처리기 몸체부
c++에서 예외처리의 바인딩은 예외 발생 코드가 포함된 복합문과 이 복합문에 있달아 예외 처리기인 복합문들이 나타났을 경우 바인딩 된다.
11.6 c++에서 임의의 예외를 처리하는 예외 처리기는 어떻게 작성되는가?
{ try {
if (index < 0 || index > 9)
throw (new_grade) ;
freq [index]++;
} //* 내부 try 문 끝
catch (int grade) { // 첨자 오류 처리기
if (grade == 100)
freq [9]++;
else
cout << \" Error -- new grade : \" << grade
<< \" is out of range \" << end1;
} // catch(int grade) 끝
} // 내부 try 문과 catch문 쌍 끝
} // while 문 끝
} //외부 try 문 끝
반복문의 제어식에서 사용된 cin 식을 사용함으로서 쉬운 처리와 첨자 범위를 벗어난 예외는 if 문으로 첨자에 관한 사용 범위를 검증하여 예외를 발생시키기보다, 첨자 연산을 중복정의해서 처리한다.
11.7 c++에서 예외 처리기가 실행을 끝냈을 때, 실행 제어는 어디로 가는가?
예외 처리기의 실행이 완료된 이후, 제어는 이 예외 처리가 속해 있는 일련의 얘외 처리기들 다음에 있는 첫 문장으로 이동 된다.
11.8 c++는 사용자의 예외 처리기에서 내장 예외를 포함하는가?
C++ 예외처리는 try, catch, throw라는 세 개의 키워드를 사용한다
try
예외 발생을 감시하려는 문장들을 try 블록 내에 둠
throw
예외( 에러) 가 try 블록 내에서 발생한다면, throw 를 사용해서 예외를 던짐
catch
catch 를 사용해서 예외를 잡아 처리함
11.9 c++의 throw 명세와 java의 throws절 간에 차이점은 무엇인가?
throw 절을 포함하지 않는 c++ 프로그램 단위는 독자에게 알 수 없는 예외를 발생할 수 있다. 그러므로 java 메소드의 throws 머리로부터 발생 할 수 있지만 처리하지 않는 예외를 알 수 있다.
11.2 c++의 예외 처리와 ada의 예외 처리를 비교하라, 여러분의 생각에 어느 족이 더 적용성이 있는가? 또한 어떤 언어가 더 신뢰성이 있는 프로그램을 작성할 수 있는가?
-ada는 예외가 발생될 때 매개변수를 예외 처리 루틴에 전달 할 수 없다.
-ada는 발생된 예외가 예외 처리 루틴을 찾는데 동적 연결의 끝가지 전파된다.
c++의 예외처리는 ada의 일부를 근간으로 하기 때문에 c++과 마찬가지로 사용자가 정의하는 예외처리를 프로그래머가 적당한 자리에 예외 처리 루틴을 기술하지 못할시 예측하지 못한 모듈에서 예외가 처리되어 디버깅 환경이 어렵게 된다.
11.3 c++의 예외 처리와 java의 예외 처리를 비교하라, 여러분의 생각에 어느 족이 더 적용성이 있는가? 또한 어떤 언어가 더 신뢰성이 있는 프로그램을 작성할 수 있는가?
- c++ 프로그램은 프로그램에서 정의되 또는 시스템에 의해서 정의된 임의의 자료형을 발생시킬 수 있다. java에서는 Throwable 또는 Throwable의 후손 클래
소개글