当知道某些代码可能会抛出错误时,我们会使用try/catch块来忽略这些错误并继续.当错误不重要但我们只想记录它时,这样做:
try{
int i = 1/0;
} catch( ArithmeticException e){
System.out.println("Encountered an error but would proceed.");
}
x = y;
Run Code Online (Sandbox Code Playgroud)
Java中的这种构造将继续执行x = y;.
我可以利用match这个或任何其他构造吗?
我确实看到了一个try!宏,但是如果方法的返回类型出现错误,它可能会返回Result.
我想在UT中使用这样的构造,以确保即使在发生错误之后它仍继续运行.
Tim*_*ann 26
Rust中的函数可以失败返回Result:
Result<T, E>是用于返回和传播错误的类型.它是变量的枚举Ok(T),表示成功并包含值,并Err(E)表示错误并包含错误值.
Rust有许多功能可以处理出现问题的情况
如果您想忽略错误,则有不同的可能性:
不要使用Result:
let _ = failing_function();
Run Code Online (Sandbox Code Playgroud)
将调用该函数,但结果将被忽略.
if let Ok(ret) = failing_function() {
// use the returned value
}
Run Code Online (Sandbox Code Playgroud)打开错误.如果发生错误,此代码会发生以下情况:
let ret = failing_function().unwrap();
// or
let ret = failing_function().expect("A panic message to be displayed");
Run Code Online (Sandbox Code Playgroud)try!()如果发生错误,则展开结果并提前返回函数.但是,使用它?代替的更加惯用try!.
也可以看看: