مدیریت خطا

die، warn و الگوهای بررسی خطا و ورودی.

die — خطای مهلک

die برنامه را با پیام خطا متوقف می‌کند:

sub divide {
  my ($a, $b) = @_;
  die "تقسیم بر صفر!" if $b == 0;
  return $a / $b;
}
say divide(10, 2);      { 5 }
say divide(10, 0);      { برنامه می‌میرد! }

warn — هشدار بدون توقف

sub process {
  my ($val) = @_;
  if ($val < 0) {
    warn "مقدار منفی: $val — ادامه می‌دهیم";
  }
  return abs($val);
}

الگوی بررسی ورودی

sub set_age {
  my ($age) = @_;
  die "سن باید عدد باشد!" unless $age =~ /^\d+$/;
  die "سن نامعتبر!" if $age > 150;
  return $age;
}

eval — اجرای امن (مفهومی)

eval {
  # کد خطرناک
  die "مشکل پیش آمد!";
};
if ($@) {
  say "خطا گرفتم: $@";      { پیام die در $@ }
}
say "برنامه ادامه دارد!";
eval مثل try/catch پرل است — اگر داخلش die شود، برنامه نمی‌میرد و خطا در $@ می‌رود.

چک‌لیست دفاعی

مثال: تابع امن

sub safe_divide {
  my ($a, $b) = @_;
  return undef unless defined $a && defined $b;
  warn "مقسوم صفر است" if $b == 0;
  return $b == 0 ? undef : $a / $b;
}

my $r = safe_divide(10, 0);
if (defined $r) { say $r } else { say "نتیجه نامعتبر" }

خلاصه

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط