PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : استفاده از try...catch در php



naghmesra
July 2nd, 2017, 15:25
سلام و درود

سوالی که برام پیش اومده اینه که چه زمانی باید از try و catch در php استفاده کرد؟

بعد یه سوال دیگه هم هست اگر یک کلاس بنویسم که از کلاس Exception ارث ببره مانند این مورد (http://php.net/manual/en/language.exceptions.extending.php) بازم باید از try و catch استفاده کرد؟

تشکر

rezaonline.net
July 3rd, 2017, 02:48
سوالی که برام پیش اومده اینه که چه زمانی باید از try و catch در php استفاده کرد؟
زمانیکه دستورتون وابسته به عوامل خارجی هست و ممکن است استثنائا اجرا نشود
مثال :
اتصال به دیتابیس به دلیل اینکه دیتابیس مشکل دارد
خواندن یا نوشتن فایل به دلیل اینکه فایل یا موجود نیست یا اجازه خواندن ندارد
اتصال به وبسرویس به دلیل اینکه خطای شبکه موجود است

لذا میتونید خطای مناسب رو توی خود پی اچ پی هندل کنید در زمان ایجاد .


بعد یه سوال دیگه هم هست اگر یک کلاس بنویسم که از کلاس Exception ارث ببره مانند این مورد بازم باید از try و catch استفاده کرد؟
بله ، اون کلاس اجزای خطای ایجاد شده رو در اختیارتون میذاره ، میتونید خطا رو توی یه فایل لاگ کنید بعدا بخونید و در کل برای مدیریت خطاست اینکه زمانیکه خطا پیش اومد چه تمهیداتی انجام بشه .

starting
July 3rd, 2017, 03:43
سلام و درود

سوالی که برام پیش اومده اینه که چه زمانی باید از try و catch در php استفاده کرد؟

بعد یه سوال دیگه هم هست اگر یک کلاس بنویسم که از کلاس Exception ارث ببره مانند این مورد (http://php.net/manual/en/language.exceptions.extending.php) بازم باید از try و catch استفاده کرد؟

تشکر
کاربر رضا خوب توضیح دادن
ولی در یک خط خلاصه کنم

وقتی یک چیز برای ادامه کار اسکریپتتون باید اجرا بشه ولی نمیشه

naghmesra
July 3rd, 2017, 12:10
تشکر از دوستان عزیز برای توضیحات خوبشون.

من الان یه موردی رو نمیفهمم. به این صفحه (https://www.w3schools.com/php/php_exception.asp) توجه کنید.

خوب توی مثال اول فقط گفته اگر عدد بالای 1 بود با throw اون ارور رو بزن توی ارور لاگ. خوب تا اینجا مشخصه همه چی ولی توی مثال دوم اون تابعی که throw داشت که سر جاشه فقط اومده کدی رو که میخواد اجرا کنه گذاشته توی try. دلیلش چیه؟ یعنی فقط با همون throw کار راه نمیوفته؟

دوستان خواهشا روشنم کنید.

تشکر

starting
July 3rd, 2017, 13:16
تشکر از دوستان عزیز برای توضیحات خوبشون.

من الان یه موردی رو نمیفهمم. به این صفحه (https://www.w3schools.com/php/php_exception.asp) توجه کنید.

خوب توی مثال اول فقط گفته اگر عدد بالای 1 بود با throw اون ارور رو بزن توی ارور لاگ. خوب تا اینجا مشخصه همه چی ولی توی مثال دوم اون تابعی که throw داشت که سر جاشه فقط اومده کدی رو که میخواد اجرا کنه گذاشته توی try. دلیلش چیه؟ یعنی فقط با همون throw کار راه نمیوفته؟

دوستان خواهشا روشنم کنید.

تشکر
throw در اونجا نقش سینتکسی خاصی داره؟
من که چیزی جز یک تکست معمولی از throw ندیدم
اون فقط یک مثال بود
بعضی مواقع نیاز هست برای بررسی سطح دسترسی ها و .... یک عدد بررسی بشه
یک مشال میزنم
شما نیاز هست برای هر لینک سایتتون یک استرینگ 4 کارکتری بین 62 حرف (a^z,A^Z,0^9) انتخاب کنید
خب طبیعتا یک تابع قرار مدیدن که این رشته رو بسازه(هنگام ثبت مطلب)
تمام فیلدها داره به دیتا بیس میره اما اون استرینگه بطور اتفاقی تکراری شده پس بیاد tray catch کنه برای یافتن استرینگی که تکراری نیست و چون ممکنه تمام رشته ها قبلا استفاده شده باشند!!
در مثال ساده بالا نیازی به try catch نیست اما چون یک روز این رشته ها تموم میشند باید catch کنه شما متوجه بشید
شما در نظر بگیرید یک کوتاه کننده لینک دارید که با فهمیدن پایان ظرفیت 4 کارکتری (از خروجی ارور) اتوماتیک اونو میبرید رو رشته 5 تایی)

- - - Updated - - -

خیلی موارد دیگه هم هست
مثلا بک آپ با php و انتقال اون به دیتا بیس دیگه
چون باید ارسال بشه باید try catch کنید