如何在不提前检查的情况下捕获零除法错误?
在python中,它可以使用try..except。
num1 = 3
num2 = 0
try:
num1 / num2
"""
I know that it should be check before divide but I want to do
without check in advance.
"""
except ZeroDivisionError:
print("Divided by zero")
Run Code Online (Sandbox Code Playgroud)
我知道检查除数更好。
但我正在寻找一种无需提前检查 Rust 的方法。
我该怎么做呢?
最安全的选择是使用各种checked_div函数之一,它返回一个Option<{number}>.
fn do_calculation() -> Result<i32, &'static str> {
let num1 = 2;
let num2 = 0;
let out = num1.checked_div(num2)
.ok_or_else(|| {
// produce some error value, using &'static str merely to reduce boilerplate
"division by zero"
})?;
}
Run Code Online (Sandbox Code Playgroud)
然后在被调用的站点上,将具有与 catch 子句等效的内容:
do_calculation().unwrap_or_else(|e| {
eprintln!("Oh no! {}", e);
});
Run Code Online (Sandbox Code Playgroud)
这些函数仍然大致相当于在执行适当的除法之前检查除数是否为 0。
也可以看看:
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |