Rust 是否有早期 return 错误的钩子?
Does Rust have hooks for early return on errors?
panic!
allows the setting of a custom (albeit global) hook。早期 returns 与 ?
运算符有什么可比的吗?我有一个函数需要在退出前以一种特殊的方式关闭一些资源。我可以编写一个函数 ok_or_close()
在返回错误之前关闭资源:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
ok_or_close(foo(), local variables)?;
ok_or_close(bar(), local variables)?;
ok_or_close(baz(), local variables)?;
ok_or_close(Ok(()), local variables)
}
但这似乎很冗长。我真正想做的是:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
foo()?;
bar()?;
baz()?;
on_err:
//Closes some stuff. Would prefer not to make
// this a function, uses many local variables.
Ok(())
}
有没有办法做到这一点或绕过这个问题的编程模式?
panic!
allows the setting of a custom (albeit global) hook。早期 returns 与 ?
运算符有什么可比的吗?我有一个函数需要在退出前以一种特殊的方式关闭一些资源。我可以编写一个函数 ok_or_close()
在返回错误之前关闭资源:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
ok_or_close(foo(), local variables)?;
ok_or_close(bar(), local variables)?;
ok_or_close(baz(), local variables)?;
ok_or_close(Ok(()), local variables)
}
但这似乎很冗长。我真正想做的是:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
foo()?;
bar()?;
baz()?;
on_err:
//Closes some stuff. Would prefer not to make
// this a function, uses many local variables.
Ok(())
}
有没有办法做到这一点或绕过这个问题的编程模式?