mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
Merge pull request #11664 from vincenzopalazzo/macros/docs
docs: add missed docs for some language feature like `defer` and `errdefer`
This commit is contained in:
commit
1d041d3a10
1 changed files with 28 additions and 1 deletions
|
|
@ -4862,14 +4862,41 @@ fn deferErrorExample(is_error: bool) !void {
|
|||
print("encountered an error!\n", .{});
|
||||
}
|
||||
|
||||
// inside a defer method the return statement
|
||||
// is not allowed.
|
||||
// The following lines produce the following
|
||||
// error if uncomment
|
||||
// ```
|
||||
// defer.zig:73:9: error: cannot return from defer expression
|
||||
// return error.DeferError;
|
||||
// ```
|
||||
//
|
||||
//defer {
|
||||
// return error.DeferError;
|
||||
//}
|
||||
|
||||
if (is_error) {
|
||||
return error.DeferError;
|
||||
}
|
||||
}
|
||||
|
||||
// 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#}
|
||||
|
|
@ -11930,7 +11957,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…
Add table
Reference in a new issue