Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 75

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

class file_access_exception : public runtime_error{

protected:

//...

int ErrorNumber;

string DetailedExplanation;

string FileName;

//...

public:

virtual int takeCorrectiveAction(void);

string detailedExplanation(void);

//...

};

Π—Π΄Π΅ΡΡŒ класс file_access_exception наслСлуСт класс runtime_error ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚Π΅ΠΌ добавлСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Π»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ². Π’ частности, добавляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ takeCorrectiveAction (). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ срСдства, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ ситуации ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ работоспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса file_access_exception Β«Π·Π½Π°Π΅Ρ‚Β», ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ содСрТит спСциализирован Π½ ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с вирусами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства Π½Π° случай Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ прСрывания процСсса ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса file_access_exception вмСстС со срСдствами гСнСрирования, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, прСлусмотрСнными Π² языкС Π‘++. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

try{

//...

fileProcessingOperation();

//.. .

} catch(file_access_exception &E) {

cerr Β« E.what() << endl;

cerr Β« E.detailedExplanation() Β« endl;

E.takeCorrectiveAction();

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ выполняСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия

// ΠΏΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ситуации.

//.. .

}

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ отобраТСния ExceptionTable, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ отобраТСния ErrorTable ΠΈΠ· Π» истингов 7.1 ΠΈ 7.2. ΠŸΡ€ΠΈ этом ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π° счСт испо Π» ьзования Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°.

Π—Π°Ρ‰ΠΈΡ‚Π° классов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΉ

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² случаС, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ сталкиваСтся с Π°Π½ΠΎΠΌΠ°Π»ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°. Однако слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ сами Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Π΅Π΄ΡŒ Ссли окаТСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации слишком слоТна ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации, Ρ‚ΠΎ схСму Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, упростив ee Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ услоТняСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ИмСнно поэтому Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² классах ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ содСрТат пустыС спСцификации throw-инструкций.

// ОбъявлСниС класса ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

class exception {

public:

exception() throw() {}

exception(const exception&) throw() {}

exception& operator=(const exception&) throw() {return *this;}

virtual ~exception() throw() {}

virtual const char* what() const throw();

};

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… throw() -ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠŸΡƒΡΡ‚Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ [12]. Если ΠΎΠ½ попытаСтся это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²ΠΎ врСмя компиляции Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ сообщСниС ΠΎΠ± ошибкС. Если Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² любом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ сдСлаСт этого.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий, логичСскиС выраТСния ΠΈ логичСскиС схСмы

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС «послСднСй Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρ‹Β», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π² ΠΊΠΎΡ€Π½Π΅ мСняСт Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ схСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π·Π°ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΊΡ‚, Π½ΠΎ эти схСмы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, достаточной для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈΠ»ΠΈ распрСдСлСния. Π’ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ соблазн ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΡˆΠΈΠ±ΠΊΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ТСсткой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Для облСгчСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎ ΠΌ ΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систС ΠΌ Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ для ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ПО. часто испо Π» ΡŒΠ·ΡƒΡŽΡ‚Ρ я Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ опасны (ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅), Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ систСмы. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прилоТСниях ΠΎΡ‚ΠΊΠ°Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ всСй систСмы. Для обСспСчСния Π±Π΅Π·ΠΎΡ‚ΠΊΠ°Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΠ°Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сочСтании с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простой Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 7.6.

Illustration 1: Рис. Рис. 7.6 ΠŸΡ€ΠΎΡΡ‚Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° событий

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий для построСния схСмы дСйствия ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сигуаций. На рис. 7.6 схСматично ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° систСма, состоящая ΠΈΠ· сСми Π·Π°Π΄Π°Ρ‡, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π±ΡƒΠΊΠ²Π°ΠΌΠΈ А, Π’, Π‘, D, E, F ΠΈ H. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ каТдая ΠΌΠ΅Ρ‚ΠΊΠ° (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Π» Π·Π°Π΄Π°Ρ‡Ρƒ) располоТСна Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ. Если ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” Π½Π΅Ρ‚. ΠšΡ€Π°ΠΉΠ½ΡΡ Ρ‚ΠΎΡ‡ΠΊΠ° слСва прСдставляСт Π½Π°Ρ‡Π°Π»ΠΎ, Π° крайняя Ρ‚ΠΎΡ‡ΠΊΠ° справа β€” ΠΊΠΎΠ½Π΅Ρ† выполнСния. Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡƒΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эгу Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ А. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ±Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ А ΠΈ Π‘. На языкС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ А ΠΈ Π‘ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹. На нашСй Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ событий ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ А ΠΈ Π‘ находятся Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Ρ‡Ρ‚ΠΎ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ± ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π· Π² любой ΠΈΠ· этих Π·Π°Π΄Π°Ρ‡ (А ΠΈΠ»ΠΈ Π‘), Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрировано ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ Π±Ρ‹ снова Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ А ΠΈ Π‘. Однако Π°Π½Π°Π»ΠΈΠ· нашСй Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ событий ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, Ссли ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π²Π΅Ρ‚Π²ΠΈ АБ, Π»ΠΈΠ±ΠΎ Π²Π΅Ρ‚Π²ΠΈ DE, Π»ΠΈΠ±ΠΎ Π²Π΅Ρ‚Π²ΠΈ FBH. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ наш ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнял ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DE ΠΈΠ»ΠΈ FBH). Наборы ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (AC, DE ΠΈ FBH) связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π˜Π›Π˜. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любого Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ выполняСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° событий (см. рис. 7.6) позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

S = (AC + DE + FBH)

часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ логичСским Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ»ΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для прСбывания систСмы Π² устойчивом состоянии (Ρ‚.Π΅. Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ Π·Π°Π΄Π°Ρ‡: (А ΠΈ Π‘) ΠΈΠ»ΠΈ (D ΠΈ E) ΠΈΠ»ΠΈ (F ΠΈ Π’ ΠΈ H). По Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ событий Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ систСмы. НапримСр, Ссли ΠΎΡ‚ΠΊΠ°ΠΆΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ E ΠΈ F, Ρ‚ΠΎ систСма ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΏΡ€ΠΈ этом Β«Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Π»ΡƒΡ‚Β» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ А ΠΈ Π‘. Но Ссли Π±Ρ‹ Π΄Π°Π»ΠΈ сбой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ А, D ΠΈ H, Ρ‚ΠΎ систСму Π² этом случаС ΡƒΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π±Ρ‹ Π½Π΅ спасло ΠΎΡ‚ ΠΎΡ‚ΠΊΠ°Π·Π°. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° событий ΠΈ логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ срСдства для описания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимых ΠΈ нСзависимых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ для построСния схСмы дСйствия ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ событий (см. рис. 7.6), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

try{

start(task А and Π’)

} catch(mysterious_condition &E) {

try{

if(!(А && Π’)){