25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Глава 12. Обработка на изключения 429<br />

Unhandled Exception: System.Exception: There was a problem<br />

at Exceptions.Demo1.Main() in Program.cs:line 11<br />

Press any key to continue . . .<br />

Йерархия на изключенията<br />

В .NET Framework има два типа изключения: изключения генерирани от<br />

дадена програма (ApplicationException) и изключения генерирани от<br />

средата за изпълнение (SystemException). Всяко едно от тези изключения<br />

включва собствена йерархия от изключения-наследници:<br />

Exception<br />

Application<br />

Exception<br />

System<br />

Exception<br />

External<br />

Exception<br />

Тъй като наследниците на всеки от тези класове имат различни характеристики,<br />

ще разгледаме всеки от тях поотделно.<br />

Класът Exception<br />

В .NET Framework Exception е базовият клас на всички изключения.<br />

Няколко класа на изключения го наследяват директно, включително<br />

ApplicationException и SystemException. Тези два класа са базови за почти<br />

всички изключения, възникващи по време на изпълнение на програмата.<br />

Класът Exception съдържа копие на стека по време на създаването на<br />

изключението. Съдържа още кратко текстово съобщение, описващо грешката<br />

(попълва се от метода, който хвърля изключението). Всяко изключение<br />

може да съдържа още причина (cause) за възникването му, която<br />

представлява друго изключение – оригиналната причина за появата на<br />

проблема. Можем да го наричаме вътрешно (обвито) изключение (inner<br />

/ wrapped exception) или вложено изключение.<br />

Външното изключение се нарича обгръщащо (обвиващо) изключение.<br />

Така може да се навържат много изключения. В този случай говорим за<br />

верига от изключения (exception chain).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!