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.

446 Въведение в програмирането със C#<br />

}<br />

{<br />

errorCode = -2;<br />

}<br />

else<br />

{<br />

errorCode = -3;<br />

}<br />

}<br />

else if (openFileErrorCode == -1)<br />

{<br />

// File does not exists<br />

errorCode = -4;<br />

}<br />

else if (openFileErrorCode == -2)<br />

{<br />

// File can’t be open<br />

errorCode = -5;<br />

}<br />

return errorCode;<br />

Както се вижда, се получава един доста замотан, трудно разбираем и лесно<br />

объркващ – "спагети" код. Логиката на програмата е силно смесена с<br />

логиката за обработка на грешките и непредвидените ситуации. По-голяма<br />

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

губи сред обработката на грешки. Грешките нямат тип, нямат текстово<br />

описание (съобщение), нямат stack trace и трябва да гадаем какво<br />

означават кодовете -1, -2, -3 и т.н. Дори много хора биха се замислили как<br />

са програмирали програмистите на C и подобни езици едно време без<br />

изключения. Звучи толкова мазохистично, като да чистиш леща с боксови<br />

ръкавици.<br />

Всички тези нежелателни последици се избягват при използването на<br />

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

че с изключения:<br />

void ReadFile()<br />

{<br />

try<br />

{<br />

OpenTheFile();<br />

while (FileHasMoreLines)<br />

{<br />

ReadNextLineFromTheFile();<br />

PrintTheLine();<br />

}<br />

}<br />

catch (FileNotFoundException)<br />

{

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

Saved successfully!

Ooh no, something went wrong!