Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 处理外部图书馆的恐慌_Error Handling_Rust_Rust Cargo_Panic - Fatal编程技术网

Error handling 处理外部图书馆的恐慌

Error handling 处理外部图书馆的恐慌,error-handling,rust,rust-cargo,panic,Error Handling,Rust,Rust Cargo,Panic,我对锈菌是个新手,并且已经开始理解锈菌默认为恐慌,而不是例外 我有一个依赖外部库的rust项目 我已经使用match语句处理了代码中的所有展开和?,但我不确定如何通过外部库处理死机 在其他语言中,我只会捕获库抛出的异常 由于Rust默认为panic,库不会返回异常,而是panic,从而中止线程的执行 理想情况下,我希望记录并继续执行,而不是惊慌失措和中止 我尝试了以下方法: ,但这看起来像是我无法在外部库上使用的东西 板条箱,使用应急挂钩记录应急情况。我可以记录恐慌,但不能阻止中止 不要惊慌

我对锈菌是个新手,并且已经开始理解锈菌默认为恐慌,而不是例外

我有一个依赖外部库的rust项目

我已经使用
match
语句处理了代码中的所有展开和
,但我不确定如何通过外部库处理
死机

在其他语言中,我只会捕获库抛出的异常

由于Rust默认为panic,库不会返回异常,而是
panic
,从而中止线程的执行

理想情况下,我希望记录并继续执行,而不是惊慌失措和中止

我尝试了以下方法:

  • ,但这看起来像是我无法在外部库上使用的东西
  • 板条箱,使用应急挂钩记录应急情况。我可以记录恐慌,但不能阻止中止
不要惊慌 我的意思是,这才是真正的解决办法:你必须避免恐慌,而不是在恐慌发生时试图从中恢复过来

一些语言随意使用异常来处理阻止某些操作的条件,并在不崩溃的情况下对其进行管理。 在Rust中,这些不受支持的条件是错误管理的,而不是恐慌

锈迹斑斑的恐慌是不可能的

  • 通常是一个bug,通常是暂时的,因为您在第一个原型中放置了一个
    展开
  • 或者是非常特殊的情况
当您使用panics时,首先检查您是否按预期使用了该函数(如果您无法在不惊慌的情况下检查该函数,这是该库中的一个错误),然后要么修复它,要么自己修复它(如果可以)

除了以尽可能快的速度崩溃之外,没有合理的方法来应对偶然的恐慌。在您的程序生命周期中,恐慌不是偶然的。

不要恐慌 我的意思是,这才是真正的解决办法:你必须避免恐慌,而不是在恐慌发生时试图从中恢复过来

一些语言随意使用异常来处理阻止某些操作的条件,并在不崩溃的情况下对其进行管理。 在Rust中,这些不受支持的条件是错误管理的,而不是恐慌

锈迹斑斑的恐慌是不可能的

  • 通常是一个bug,通常是暂时的,因为您在第一个原型中放置了一个
    展开
  • 或者是非常特殊的情况
当您使用panics时,首先检查您是否按预期使用了该函数(如果您无法在不惊慌的情况下检查该函数,这是该库中的一个错误),然后要么修复它,要么自己修复它(如果可以)


除了以尽可能快的速度崩溃之外,没有合理的方法来应对偶然的恐慌。恐慌在你的程序生命中不是偶然的。

对不起,我一直想用友好的大字写“不要恐慌”。我建议你强调一下,如果一个库无法在不恐慌的情况下处理(或检查)某个情况,那就是库的API设计中的一个错误?@KevinReid试图将此作为答案。对不起,我一直想用友好的大字写下“不要惊慌”。我建议强调一下,如果一个库无法在不惊慌的情况下处理(或检查)某个情况,那就是库的API设计中的一个缺陷吗?@KevinReid试图在答案中说明这一点。