عملگرد Try
خطاهای زمان اجرا مانند connection-refused یا file-not-found با نوع «نتیجه» مدیریت میشوند، اما تطبیق این نوع در هر تماس میتواند دشوار باشد. اپراتور ?
برای برگرداندن خطاها به تماس گیرنده استفاده میشود. این به شما امکان میدهد تا موارد مشترک را بازگردانید.
match some_expression {
Ok(value) => value,
Err(err) => return Err(err),
}
بسیار سادهتر
some_expression?
میتوانیم از این برای سادهسازی کد رسیدگی به خطا استفاده کنیم:
Speaker Notes
This slide should take about 5 minutes.
تابع read_username
را برای استفاده از ?
ساده کنید.
نکات کلیدی:
- متغیر
username
می تواندOk(string)
یاErr(error)
باشد. - از فراخوانی
fs::write
برای آزمایش سناریوهای مختلف استفاده کنید: بدون فایل، فایل خالی، فایل با نام کاربری. - توجه داشته باشید که
main
تا زمانی کهstd::process::Termination
را پیادهسازی کند، میتواندنتیجه<(), E>
را برگرداند. در عمل، این بدان معنی است کهE
پیادهسازیDebug
را انجاممیدهد. فایل اجرایی، نوعErr
را چاپ میکند و در صورت خطا، وضعیت خروج غیر صفر (nonzero) را برمیگرداند.