TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #608 354
🐘 همیشه try/catch کردن کار درستی نیست!

یکی از اشتباهات رایج در PHP اینه که هر جا احتمال خطا وجود داشت، سریع بنویسیم:
try {
$user = createUser($data);
} catch (Exception $e) {
return false;
}

مشکل اینجاست که با این کار ممکنه اطلاعات مهم خطا رو نابود کنیم.

مثلاً:
function createUser(array $data): bool
{
try {
// Database operation...
return true;
} catch (Throwable $e) {
return false;
}
}

حالا لایه‌ی بالاتر فقط می‌فهمه:
false

اما نمی‌دونه:

* Database مشکل داشته؟
* Validation شکست خورده؟
* Unique constraint نقض شده؟
* Connection قطع شده؟
* Bug واقعی اتفاق افتاده؟

راه بهتر 👇

اگر این لایه نمی‌تونه خطا رو واقعاً مدیریت کنه، معمولاً بهتره Exception رو بگیری و بی‌دلیل خفه‌اش نکنی:

function createUser(array $data): User
{
// اگر خطایی رخ دهد، Exception به caller منتقل می‌شود
return User::create($data);
}

بعد در لایه‌ای که واقعاً می‌تونه تصمیم بگیره، مدیریت کن:

try {
$user = createUser($data);

return response()->json($user);
} catch (Throwable $e) {

logger()->error($e->getMessage());

return response()->json([
'message' => 'Something went wrong'
], 500);
}

اینجا Exception در مرز مناسب مدیریت شده؛ هم کاربر پیام مناسب می‌گیره، هم خطای واقعی برای Debug باقی می‌مونه.

⚠️ یک تفاوت مهم

Exception برای اتفاقات قابل مدیریت مناسبه.

اما این کار:
catch (Throwable $e) {
return false;
}

می‌تونه یک Bug واقعی برنامه رو هم پنهان کنه.

یعنی:
Real Error
↓
catch
↓
false
↓
برنامه ادامه پیدا می‌کند
↓
Debugging nightmare 💀

🔥 قاعده حرفه‌ای:

مبحث Exception را فقط جایی Catch کن که واقعاً می‌دانی با آن چه کار کنی.

اگر فقط قرار است بگیری، false برگردانی و اطلاعات خطا را دور بریزی، احتمالاً Catch کردن در آن لایه تصمیم درستی نیست.

موضوع Error handling خوب یعنی خطا را پنهان نکنی؛ در لایه‌ی درست، آن را مدیریت کنی.


@CodeVerse_dev
  • 👍 5
  • ❤ 2
More from @codeverse_dev
  1. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  2. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  3. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  4. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
  5. Oct 6, 2026اگر Chrome استفاده می‌کنی، این آپدیت را جدی بگیر ⚡ نسخه Stable مرورگر Chrome برای دسکتاپ ب…
  6. Oct 6, 2026🖥 سازنده محتوایی؟ ویندوزت بدون این ۵ نرم‌افزار نصفه‌ست! خب راستشو بخوای، من خودم تا چند و…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →