mirror of
https://github.com/ziglang/zig.git
synced 2024-11-14 16:13:24 +00:00
docs: add documentation on errdefer with caputure syntax
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
parent
8328f5ed51
commit
80f3c8d276
@ -4831,9 +4831,23 @@ fn deferErrorExample(is_error: bool) !void {
|
||||
}
|
||||
}
|
||||
|
||||
// The errdefer keyword support also an alternative syntax to capture the
|
||||
// error generated in case of one error.
|
||||
//
|
||||
// This is useful when during the clean up after an error additional
|
||||
// message want to be printed.
|
||||
fn deferErrorCaptureExample() !void {
|
||||
errdefer |err| {
|
||||
std.debug.print("the error is {s}\n", .{@errorName(err)});
|
||||
}
|
||||
|
||||
return error.DeferError;
|
||||
}
|
||||
|
||||
test "errdefer unwinding" {
|
||||
deferErrorExample(false) catch {};
|
||||
deferErrorExample(true) catch {};
|
||||
deferErrorCaptureExample() catch {};
|
||||
}
|
||||
{#code_end#}
|
||||
{#see_also|Errors#}
|
||||
@ -11941,7 +11955,7 @@ fn readU32Be() u32 {}
|
||||
<pre>{#syntax#}errdefer{#endsyntax#}</pre>
|
||||
</th>
|
||||
<td>
|
||||
{#syntax#}errdefer{#endsyntax#} will execute an expression when control flow leaves the current block if the function returns an error.
|
||||
{#syntax#}errdefer{#endsyntax#} will execute an expression when control flow leaves the current block if the function returns an error, the errdefer expression can capture the unwrapped value.
|
||||
<ul>
|
||||
<li>See also {#link|errdefer#}</li>
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user