🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ امیرحسین صحرانورد
مدیریت exception
جامعه پی اچ پی ایجاد شده در ۰۲ تیر ۱۳۹۹

سلام

برای مدیریت exception تو try catch  درون catch نیاز است دقیقا تعیین کنیم خطای مربوط به کدام کلاسدریافت شود یا همان کلاس exception کفایت میکند ؟

مثلا

$servername = "localhost";
$username = "username";
$password = "password";
try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}

به جای PDOException $e از  Exception $e استفاده کنیم ؟؟؟؟

سلام.

اگر به فریمورک‌های بزرگ PHP نگاه بندازید، میبینید برای هر قسمت یک کلاس Exception نوشته شده مثلا در فریمورک Yii یک سری از کلاس‌های Exception ای که نوشته شده رو میارم که ایده بگیرید:  UnknownClassException، UnknownMethodException، UnknownPropertyException، InvalidRouteException، InvalidArgumentException، UserException و ...

 

یا مثلا کلاسی به اسم BadRequestHttpException(خطای ۴۰۰) که از HttpException مشتق شده(خطاهای ۴۰۳، ۴۰۴ و ...) که باز این کلاس از کلاس UserException مشتق شده که در نهایت UserException از کلاس Exception خود PHP مشتق شده.

 

هر کدوم ازین کلاس‌ها میتونن property‌ها یا متدهای custom داشته باشن. برای مثال فریمورک yii یک پراپرتی statusCode و متد getName برای این کلاس هاش در نظر گرفته.

بنابراین فریمورک‌های PHP رو نگاه بندازید و از ساختارشون الگو بگیرید و تجربه کسب کنید تا هسته ی پروژه هاتون ساختار منظم‌تری داشته باشن. همچنین تولید Exception‌ها مدیریت خطاهارو براتون به مراتب راحتتر میکنه، ضمن اینکه برای خطا‌های خود PHP هم میتونید ساختاری در نظر بگیرید و اون‌ها رو هم خودتون مدیریت کنید.

پروژه‌های مختلفو حتما نگاه بندازید.

بهترین پاسخ
محسن موحد ۰۲ تیر ۱۳۹۹، ۲۰:۴۱