گرفتن قبلی (getPrevious)
متد «getPrevious()» وقتی «استثنا (Exception)» روی استثنای قبلی ساخته شده باشد، همان استثنای قبلی را برمی گرداند. این یعنی زنجیره خطاها را می بینی؛ مثل دیدن علت اصلی دعوای کلاس.
تعریف کوتاه و کاربرد
اگر استثنا توسط استثنای دیگری ایجاد شده باشد، getPrevious() آن استثنا را می دهد. در غیر این صورت، مقدار null برمی گردد. بنابراین می توانی علت ریشه ای را پیدا کنی و دیباگ دقیق تر انجام دهی.
مثال عملی از منبع
<?php
try {
try {
throw new Exception("An error occurred", 1);
}
catch (Exception $e1) {
throw new Exception("Another error occurred", 2, $e1);
}
}
catch (Exception $e2) {
echo $previous = $e2->getPrevious();
echo $previous->getMessage();
}
?>
سه گام برای ردیابی علت
- استثنای اصلی را در try داخلی پرتاب کن.
- در catch داخلی، استثنای جدید را با previous بساز.
- در catch بیرونی، با getPrevious() علت را بخوان.
نکته: همیشه قبل از استفاده، بررسی کن مقدار برگشتی null نباشد. این کار از خطای جدید جلوگیری می کند.
مطالعه مرتبط
برای تصویر کامل، مرجع استثنا را ببین. همچنین پیام خطا را با getMessage و کد خطا را با getCode بررسی کن. برای سازنده، سر بزن به کلاس Exception. این هم لینک با کلیدواژه ما: استثنای قبلی.
جمع بندی سریع
- getPrevious() علت ریشه ای را نشان می دهد.
- اگر قبلی نباشد، مقدار null است.
- برای دیباگ زنجیره ای عالی است.
- همراه getMessage و getCode کامل تر می شود.