مدیریت exception

پرسیده شده
فعالیت 1410 روز پیش
دیده شده 793 بار
0

سلام

برای مدیریت 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 استفاده کنیم ؟؟؟؟

فایل پیوست

1
حذف شده

سلام.

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

 

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

 

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

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

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

فایل پیوست

محسن موحد

توسط

محسن موحد

2 تیر 99