Обробка помилок (Error Handling)
Помилки — це факт життя в програмному забезпеченні, тому Rust має низку можливостей для обробки ситуацій, у яких щось іде не так. У багатьох випадках Rust вимагає від вас визнати можливість помилки та вжити певних дій, перш ніж ваш код буде скомпільовано. Ця вимога робить вашу програму надійнішою, гарантуючи, що ви виявите помилки й обробите їх належним чином до того, як розгорнете ваш код у промислове середовище (production)!
Rust поділяє помилки на дві основні категорії: відновлювані та невідновлювані помилки. Для відновлюваної помилки, такої як помилка file not found, ми найімовірніше просто хочемо повідомити про проблему користувачу та повторити операцію. Невідновлювані помилки завжди є симптомами багів, таких як спроба отримати доступ до розташування за межами кінця масиву, і тому ми хочемо негайно зупинити програму.
Більшість мов не розрізняють ці два види помилок і обробляють
обидва однаково, використовуючи механізми на кшталт виключень (exceptions). У Rust немає
виключень (exceptions). Натомість він має тип Result<T, E> для відновлюваних помилок і
макрос panic!, який зупиняє виконання, коли програма стикається з
невідновлюваною помилкою. У цьому розділі спочатку розглядається виклик panic!, а потім
говориться про повернення значень Result<T, E>. Додатково ми дослідимо
міркування під час визначення, чи намагатися відновитися після помилки, чи зупинити
виконання.