Наборы ошибок и объединение !T
Используйте ошибки как полноценные значения.
«Наборы ошибок и объединение !T» — бесплатный урок Zig Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Errors Are Values
In Zig there are no exceptions. An error is just an ordinary value your function can return, so failure is visible in the code.
Declare an Error Set
An error set is a named group of possible errors. You list the variants much like an enum of things that can go wrong.
const FileError = error{
NotFound,
PermissionDenied,
};Refer to One Error
Each member of an error set is reached with a dot. The value FileError.NotFound is a single concrete error you can return.
return FileError.NotFound;Anonymous Error Sets
You do not always need a name. Writing error{Empty} inline creates a tiny one-off error set right where it is used.
return error.Empty;The Bang Means Maybe-Error
The ! in a type builds an error union. The type before it is the success value; an error may appear in its place instead.
FileError!u32Read !T Out Loud
You can read !u32 as either a u32 or an error. The single value carries both outcomes, so callers must pick one.
Two Sides of the Union
An error union has exactly two shapes at runtime: a valid payload of type T, or one of the errors from the set. Never both.
Set Before the Bang
Put the error set on the left of ! to say exactly which errors are allowed. This documents failure right in the type.
fn parse(s: []const u8) FileError!u32 {
// ...
}Merge Error Sets
The || operator on two error sets combines them into one. This lets a function admit errors from several sources at once.
const AllError = FileError || NetError;anyerror Is the Superset
The built-in anyerror contains every possible error. It is convenient but loses the precision of a named set, so use it sparingly.
fn risky() anyerror!void {}Why Sets Help
Because errors live in the type, the compiler knows every failure a function can produce. Nothing slips past you unhandled.
Quick Check
You see the type FileError!u32 on a function. What does it describe?
Recap
You met error sets, the !T union, set merging with ||, and anyerror. Errors are plain values the type system tracks for you. ✅
Часто задаваемые вопросы
Урок «Наборы ошибок и объединение !T» бесплатный?
Да — полный текст урока «Наборы ошибок и объединение !T» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Наборы ошибок и объединение !T»?
Используйте ошибки как полноценные значения. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Наборы ошибок и объединение !T»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Наборы ошибок и объединение !T
- Возврат ошибок из функций
- Передача сбоев с помощью try
- Выводимые наборы ошибок