انواع خطاهای Dynamic
گاهی اوقات میخواهیم اجازه دهیم هر نوع خطای بدون نوشتن enum خودمان که تمام احتمالات مختلف را پوشش میدهد، برگردانده شود. ویژگی std::error::Error
ایجاد یک object مشخ استه که میتواند حاوی هر خطایی باشد را آسان میکند.
Speaker Notes
This slide should take about 5 minutes.
تابع read_count
میتواند std::io::Error
(از عملیات فایل) یا std::num::ParseIntError
(از String::parse
) را برگرداند.
خطاهای Boxing باعث صرفهجویی در کد می شود، اما توانایی رسیدگی به موارد خطای مختلف را به طور متفاوت در برنامه از بین میبرد. به این ترتیب استفاده از Box<dyn Error>
در public API یک کتابخانه ایده خوبی نیست، اما میتواند گزینه خوبی در برنامهای باشد که فقط میخواهید پیام خطا را در جایی نمایش دهید.
هنگام تعریف یک نوع خطای سفارشی، مطمئن شوید که ویژگی std::error::Error
را اجرا کنید تا بتوان آن را در جعبه قرار داد. اما اگر نیاز به پشتیبانی از ویژگی no_std
دارید، به خاطر داشته باشید که ویژگی std::error::Error
در حال حاضر با no_std
در nightly سازگار است.