دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه! دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه!
🎯 ثبت نام
بستن تبلیغات
دوره آموزش جامع PHP از صفر تا صد با پروژه‌های عملی

توی دوره رایگان PHP، هر چیزی که برای حرفه‌ای شدن نیاز داری رو یاد می‌گیری! از مفاهیم پایه تا پیشرفته، همراه با یه پروژه واقعی برای ساخت یه سایت مثل آپارات.

مشاهده بیشتر
دوره پروژه‌محور لاراول: ساخت وبسایت خبری از صفر تا صد

توی این دوره با هم یه وبسایت خبری واقعی رو از صفر می‌سازیم! از طراحی دیتابیس و احراز هویت تا ساخت API و یه پنل مدیریت حرفه‌ای، همه رو یاد می‌گیریم و آماده پروژه‌های واقعی میشی!

مشاهده بیشتر

آموزش PHP Error Handeling

رفع خطاها، فرآیند پیدا کردن خطاها یی است که برنامه اعلام می کند. پس از پیدا کردن خطا اقدام مناسب صورت می گیرد. اگر این خطاها به درستی رفع نگردند، در آینده به مشکلات و تبعات دور از انتظار برخورد خواهید کرد.
رفع خطاها در PHP بسیار پروسه ی آسانی است.

استفاده از die() function

هنگام برنامه نویسی و پیش از پرداختن به رفع error، شما باید تمام شرایطی که ممکن است خطا در آن رخ دهد را پیش بینی کرده و درنظر بگیرید.
مثال زیر را بدون فایل /tmp/test.xt و با این فایل امتحان کنید.

                    if(!file_exists("/tmp/test.txt"))‎
                    ‎ {‎
                    ‎ die("File not found");‎
                    ‎ }‎
                    else
                    ‎ {‎
                    ‎ $file=fopen("/tmp/test.txt"‎، ‏‎"r");‎
                    ‎ print "Opend file sucessfully";‎
                    ‎ }‎
                    ‎ // Test of the code here.‎
                    ‎?>‎
                

با این روش می توانید یک کُد کارآمد بنویسید. با استفاده از این تکنیک، شما می توانید برنامه ی خود را هر زمانی که error داد متوقف کنید و پیغام های بسیار ساده تر و معنی دار تر نمایش دهید.

تعریف تابع سفارشی رفع خطا {custom error handling}

شما می توانید عملکرد سفارشی و خاص خود را برای رفع خطا بنویسید.PHP چهارچوب خاصی برای معرفی و نوشتن عملکرد رفع خطا مشخص می کند.
این عملکرد باید حداقل با دو پارامتر هم زمان کار کند ) error message و error level) ولی می تواند تا حداقل پنج پارامتر را بپذیرد )به دلخواه، فایل، شماره ی خط {file number} ومتن خطا {error context}).

syntax {دستور نحوی}

error_function(error_level، error_message، error_file، error_line، error_context);
parameter
Description
error_level
اجباری-error report level {سطح و مرحله ی خطا} را برای user-defined error{خطای مربوط به کاربر } روشن می سازد.باید یک value number باشد.
error_message
الزامی-پیغام خطا را برای خطای مربوط به و از طرف کاربر تعریف می کند.
error_file
اختیاری-اسم فایلی را که خطا در آن رخ می دهد را معرفی می کند.
error_line
اختیاری-شماره ی خطی را که خطا در آن رخ می دهد را معرفی می کند.
error_context
اختیاری-آرایه{array}ای که تمام variable و value های مربوط به آن در به هنگام رخ دادن error ، در حال استفاده شدن بودن را در برداشت .

مراحل احتمالی خطا {error levels}

این error levels انواع خطاهیی هستند که برنامه ی رفع کننده ی خطا نوشته شده توسط خود کاربر را می توان برای مدیریت و رفع آن به کار برد.

Value {مقدار}
Constant{ثابت}
Description{توصیف کاربرد}
1
E_ERROR
خطای جدی زمان-اجرا{fatal run-time error}.اجرای پردازه{script} را متوقف می کند.
2
E_WARNING
خطاهای جزئی زمان-اجرا. اجرای پردازه{script} متوقف نمی شود.
4
E_PARSE
Compile-time parse error{خطا، تجزیه زمان -کامپایل }، خطای تجزیه {pars} فقط توسط parser تولید واعلام می شود.
8
E-NOTICE
اخطاریه زمان-اجرا. پردازه چیزی را پیدا می کند که ممکن است خطا یا error محسوب شود، ولی این مشکل ممکن هنگام اجرای پردازه هم رخ دهد.
16
E-CORE-ERROR
خطاهای اساسی که هنگام اجرا و بالا آمدن برنامه رخ می دهد.
32
E-CORE-WARNING
خطاهای جزئی زمان-اجرا.این دسته خطا ها درحال اجرا اولیه PHP روی می دهد.
256
E-USER-ERROR
خطاهای جدی تولید شده توسط کاربر-این خطا مانند E-ERROR می مانند که توسط برنامه نویس تنظیم شده و از تابع trigger-error() ، PHP استفاده می کند.
512
E_USER_WARNING
هشدارهای جزئی user-generated {از طرف کاربر} این خطا مانند E-WARNING می مانند که توسط برنامه نویس تنظیم شده و از تابع trigger-error() ، PHP استفاده می کند.
1024
E_USER_NOTICE
اخطار از جانب کاربر- این خطا مانند E_NOTICE می مانند که توسط برنامه نویس تنظیم شده و از تابع trigger-error() ، PHP استفاده می کند.
2048
E_STRICT
اخطار زمان-اجرا{run-time }-در صورت فعال بودن ، PHP تغییراتی را برای کُد شما پیشنهاد می کند که تبعاً باعث سازگاری و همچنین {interoperability} سازگاری پیش رو {forward compatibility} کُد شما می شود.
4096
E_RECOVERABLE_ERROR
خطا پیداکردنی جدی {catchable fatal error} این اخطار مانند E-ERROR است با این تفاوت که می توان آن را با رفع کننده ی خطا، نوشته شده توسط کاربر {user-defined error handler} پیدا و مدیریت کرد.
8191
E_ALL
تمامی خطا و هشدارها به جز E_STRICT.(E_STRICT از PHP 6 بخشی از E_ALL )

تمام مراحل خطا {error level} بالا را می توان با استفاده از PHP built-in library function زیر انتخاب کرد که در آن خطا می تواند هر یک از value های تعریف شده در جدول بالا باشد.

int error_reporting ( [int $level] )

در عبارت زیر یکی از راه هایی که می توانید با آن تابع مدیریت و رفع خطا ایجاد کنید به نمایش گذاشته شده است.

                            function handleError($errno، ‏‎ $errstr‎، ‏‎$error_file‎، ‏‎$error_line)‎
                            ‎{ ‎
                            ‎ echo "Error: [$errno] $errstr - $error_file:$error_line";‎
                            ‎ echo " 
                            ‎";‎
                            ‎ echo "Terminating PHP Script";‎
                            ‎ die();‎
                            ‎}‎
                            ‎?>‎
                        

پس از این که error-handler custom {رفع کننده ی خطا سفارشی و مخصوص به خود} را نوشتید ، باید به کمک set_error_handler که یکی از عملکردهای PHP built-in library function هست آن را انتخاب و تنظیم کنید.حال اجازه دهید با مثال زیر عملکرد {function} ای که وجود ندارد فرابخوانیم.

                        error_reporting( E_ERROR );‎
                        function handleError($errno، ‏‎ $errstr‎، ‏‎$error_file‎، ‏‎$error_line)‎
                        ‎{‎
                        ‎ echo "Error: [$errno] $errstr - $error_file:$error_line";‎
                        ‎ echo " 
                        ‎";‎
                        ‎ echo "Terminating PHP Script";‎
                        ‎ die();‎
                        ‎}‎
                        ‎//set error handler‎
                        set_error_handler("handleError");‎
                        ‎//trigger error‎
                        myFunction();‎
                        ‎?>‎
                    

مدیریت استثنا ها {handling exception}

PHP5 مدل استثنا {exception model} ای شبیه به زبان های برنامه نویسی دیگر دارد.استثنا ها از اهمییت بسیار برخوردار است و تسلط بیشتری در رفع و مدیرییت خطا در اختیار شما قرار می دهد.
اجازه دهید واژه های کلیدی مربوط به استثنا ها را یکی یکی تشریح کنیم.

  • try – تابع {function} ای که از استثنا {exception} استفاده می کند باید در بلوک {block} try باشد. اگر استثنا فعال یا trigger نشود، کُد روال عادی خودش را ادامه می دهد. اما اگر trigger شود ، یک exception نشان داده {thrown} می شود.
  • throw - به کمک این آیتم شما {trigger} باعث یک {exception} استثنا می شوید. هر "throw" حداقل باید یک "exception " داشته باشد.
  • catch - یک بلوک "catch" با بازیابی یک استثنا object یا شی ای می سازد دربردارنده ی اطلاعات exception.

هنگامی که استثنا یی "thrown" می شود، کُدی که به دنبال دستور {statement} می آید اجرا نخواهد شد و PHP سعی می کند اولین matching catch block {کَچ بلاک مطابق} را پیدا کند. اگر هیچ استثتنایی "catch" نشد، یک پیغام خطای جدی PHP صادر می شود به این شکل "uncaught exception....
یک استثنا را در PHP می توان پرتاب کرد {thrown} و گرفت {caught یا catched} .کد ممکن است داخل یک بلوک تلاش {try block} محصور شده یا قرار گیرد.
هر تلاش {try} باید حداقل یک catch block مطابق و مربوط داشته باشد. می توان از چند code block برای گرفتن {catch} چند نوع یا کلاس استثنا {exception class} هم زمان استفاده کرد.
استثنا ها را می توان در یک codeblock throw یا rethrow کرد.

مثال

در زیر یک تکه کُد هست، این کد را در یک فایل کپی و پیست کنید و سپس نتایج را بررسی و تایید کنید.

                        try {‎
                            ‎    $error = 'Always throw this error';‎
                            ‎    throw new Exception($error);‎
                            ‎    // Code following an exception is not executed.‎
                            ‎    echo 'Never executed';‎
                            ‎} catch (Exception $e) {‎
                            ‎    echo 'Caught exception: '‎، ‏‎  $e->getMessage()‎، ‏‎ "\n";‎
                            ‎}‎
                            ‎// Continue execution‎
                            echo 'Hello World';‎
                            ‎?>‎
                    

در مثال بالا از $e->getMessage function برای دریافت پیغام خطا استفاده می شود. function های زیر را می توانید از exception class انتخاب کنید.

  • getmessage() - پیغام استثنا {message of exception}
  • getcode() - کُدِ استثنا {code of exception}
  • getcode() - اسم فایل منبع {source filename}
  • getline() - خط منبع {source line}
  • gettrace() - آرایه ی backtrace()
  • gettraceasstring() - رشته ی فرمت شده و قالب دار پی گیری {array of formatted string}

ساختن مدیریت کننده سفارشی استثنا ها {custom exception handler}

شما می توانید رفع کننده ی استثنا خاص خود را طراحی کنید. از تابع {function} زیر برای انتخاب کردن این گزینه استفاده کنید.

string set_exception_handler ( callback $exception_handler )‎

اینجا exception_handler نام function ای است که هنگام رخ دادن یک uncaught exception باید فراخوانده شود. این function باید قبل از فراخواندن set_exception_handler() معرفی شود.

مثال
                        function exception_handler($exception) {‎
                        ‎  echo "Uncaught exception: " ‎، ‏‎ $exception->getMessage()‎، ‏‎ "\n";‎
                        ‎}‎
                        set_exception_handler('exception_handler');‎
                        throw new Exception('Uncaught Exception');‎
                        echo "Not Executed\n";‎
                        ‎?>‎‎
                    

مجموعه کامل function های رفع کننده ی خطا را در این می توان مشاهده کرد PHP Error Handling Functions.

1394/07/27 8638 2083
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...