error-handling - Rust 是否有提前返回错误的钩子?
问题描述
panic!
允许设置自定义(尽管是全局的)钩子。?
与运营商的早期回报有什么可比性吗?我有一个功能需要在退出之前以特殊方式关闭一些资源。我可以编写一个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(())
}
有没有办法做到这一点或解决这个问题的编程模式?
解决方案
推荐阅读
- mysql - 如何根据 MySQL/SQLAlchemy 查询输出在 Hue 中设置变量?
- mysql - 仅包含外键的表
- html - 折线图未在 mat-tab 中显示(角度材料)
- python - 导入理解失败
- php - 我不知道如何使用 MAMP 使用 Symfony 显示我自己的页面
- django - 我如何在 Django 中创建更新功能
- ms-access - 将大型数据库从 MariaDB 链接到 Ms 访问 - 获取“ODBC – 调用失败。(错误 3146)”
- vba - 更改 InLineShape 上的自动更新属性时出现错误 5891
- spring-boot - Spring Boot Logback - 禁用要在控制台上显示的类文件记录器
- excel - 添加项目后VBA删除行