ПредишенСледващото

Всички уеб потребителите да знаят колко е неприятно на моменти да отворите страницата и да видим вместо дългоочакваните статия / блог / изображения malovrazumitelny един текст, който казва, грешка на сървъра. За съжаление, реалността на интернет е, че е много трудно да се направи скрипт, който работи еднакво добре на всяка платформа и при никакви настройки на сървъра.

Ето защо е много важно да се определи правилно и да се справят грешки, които могат да се появят в сценария. обработка на грешки и изключения работа - за тия два механизма, предоставени от PHP.

От гледна точка на разработчика, основната разлика между грешката на изключване е, че при възникване на грешка на скрипта може да продължи и след настъпването на изключение - не.

Друга разлика - за обработка на изключения, е необходимо да се използва специализирани функции и езикови конструкции, както и да се справят с грешки - само функция.

Изключения - е извънредни ситуации, които възникват по време на сценария. В PHP можете да генерирате изключение ( "хвърлят", "причина") и да го хване. Изключение може да senerirovatsya като преводач и програмист.

хвърляне на изключение, както следва:

Засичане изключения чрез използване на опит структура. хване. В тази конструкция общ вид се изписва така:

Заслужава да се отбележи, че блоковете на улова, могат да бъдат много, по един за всеки клас хваща изключение. По този начин, можете да създадете филтър изключения. т.е. прихващане, не всички, но само на няколко избрани видове изключения, както и всички други ще бъдат прихванати от стандартен манипулатор за PHP.

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

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

В този пример, ние заявяваме, две наследник от клас Exception и извършва генериране на отчети. Първото нещо, което да включва всички необходими източници на данни (бази данни, файлове и т.н.). Ако поне един източник не е свързан - не може да продължи да работи, и да предупреди грешката на администратор. Ето защо, ние се генерира изключение от тип ExceptionMailer. Ако връзката е успешна - ние продължаваме да работим, да обработва данните и генериране на доклад, на базата на шаблон. Ако не бъде намерен на модела - да се получи нужната изключение.

В този пример, важна роля се играе от порядъка на улова, или по-скоро как да се провери от вида на изключение. Когато за първи път постави изключение, всички други изключения никога не работят, защото дизайн улов (Изключение $ ех) прихваща абсолютно всички налични изключения.

PHP ви позволява да използвате вашия изключение манипулатор. За да направите това, трябва да декларират своя собствена функция за обработка и да го регистрирате с set_exception_handler (функция).

След това, всичко, което е изключение, а не в рамка дизайн опитам. освен, ще бъдат прехвърлени към декларацията за функция. Например, можете да промените функцията, която тя написа всички изключения във файл и показва на потребителя в браузъра "красив" съобщение за грешка на сървъра:

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

Един добър навик да се създаде сайт се счита за пълно отсъствие на грешки. Ако възникнат грешки - те трябва да бъдат обработени и представени на ползвателя и на разработчика по разбираем вид.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!