C и C + + Програмиране ресурси

Отбележи
Персонализирано търсене

Адванс изключения

Публикувано на 10-ти Септември, 2008

Хвърляне на изключения

Ако се сблъскате с една изключителна ситуация в кода?, Че е една, в която не разполагате с достатъчно информация в текущия контекст, за да реши какво да прави? Можете да изпратите информация за грешката в по-широкия контекст чрез създаване на обект, който съдържа тази информация и? хвърляне? той от своя настоящия контекст. Това се нарича хвърляне на изключение. Тук? Е такова каквото изглежда така:

  клас MyError (
 Const знак данни * Const;
 обществеността:
 MyError (Const знак Const * съобщи = 0): данни (MSG) ()
 );
 нищожен е () (
 / / Тук "хвърлят" на обектите изключение:
 хвърлят MyError ("нещо се случи лошо");
 )
 INT главната () (
 / / Както ти? Ще видите скоро,
 / / Ние ще искаме "опитайте блок" тук:
 Е ();
 ) ///:~ 

MyError е обикновен клас, които в този случай се знак * като конструктор аргумент. Можете да използвате всякакъв вид, когато хвърли (включително вградена видове), но обикновено вие? Ще създават специални класове за хвърляне изключения.

Ключовата дума хвърлят причинява редица сравнително магически неща, за да се случи. Първо, тя създава копие на обекта вас? Отново хвърлят и в действителност? Връща? то от функцията, съдържащ хвърлят израз, макар че е ли вид на обекта? т нормално това, което функцията му цели да се върне. А НС? Си начин да се мисли за изключение е за заместник механизъм за връщане (макар да намерите можете да получите в беда, ако вземат аналогия твърде далеч). Можете също така да излезе от обичайната сфера от хвърляне на изключение. Във всеки случай, една стойност се връща и функция или изходи обхват.

Всяка прилика с функция връща завършва там, защото, когато се върнете е някъде съвсем различна, от където една нормална функция връща повикване. (В крайна сметка в съответната част на кода? Наречена изключение треньор? Които могат да бъдат далеч от където изключението е било хвърлено.) Освен това създаването на местни обекти, създадени от момента, в който възниква изключение, са унищожени. Това автоматично почистване на местните предмети, често се нарича? Стека отмяна.?

Страници: [Page - 1] [Page - 2] [Page - 3] [Page - 4] [Page - 5] [Page - 6] [Page - 7]

Тагове: , , , , , , , ,

Като това, което виждате?

Станете един от редовна войска, като се абонирате! Вие ще бъдете първите, които знаят, когато добавите още много постове просто така. Присъедини се от или RSS Feeds или имейли с актуализации днес!

Няма коментари за тази публикация. Можете да проследите коментарите към този пост чрез RSS 2.0 емисия . Можете да прескочите до края и оставите коментар или TrackBack от вашия собствен сайт.


Вашият коментар

Трябва да сте влезли в За да публикувате коментар.