Error handling 处理外部图书馆的恐慌
我对锈菌是个新手,并且已经开始理解锈菌默认为恐慌,而不是例外 我有一个依赖外部库的rust项目 我已经使用Error handling 处理外部图书馆的恐慌,error-handling,rust,rust-cargo,panic,Error Handling,Rust,Rust Cargo,Panic,我对锈菌是个新手,并且已经开始理解锈菌默认为恐慌,而不是例外 我有一个依赖外部库的rust项目 我已经使用match语句处理了代码中的所有展开和?,但我不确定如何通过外部库处理死机 在其他语言中,我只会捕获库抛出的异常 由于Rust默认为panic,库不会返回异常,而是panic,从而中止线程的执行 理想情况下,我希望记录并继续执行,而不是惊慌失措和中止 我尝试了以下方法: ,但这看起来像是我无法在外部库上使用的东西 板条箱,使用应急挂钩记录应急情况。我可以记录恐慌,但不能阻止中止 不要惊慌
match
语句处理了代码中的所有展开和?
,但我不确定如何通过外部库处理死机
在其他语言中,我只会捕获库抛出的异常
由于Rust默认为panic,库不会返回异常,而是panic
,从而中止线程的执行
理想情况下,我希望记录并继续执行,而不是惊慌失措和中止
我尝试了以下方法:
- ,但这看起来像是我无法在外部库上使用的东西
- 板条箱,使用应急挂钩记录应急情况。我可以记录恐慌,但不能阻止中止
不要惊慌
我的意思是,这才是真正的解决办法:你必须避免恐慌,而不是在恐慌发生时试图从中恢复过来
一些语言随意使用异常来处理阻止某些操作的条件,并在不崩溃的情况下对其进行管理。
在Rust中,这些不受支持的条件是错误管理的,而不是恐慌
锈迹斑斑的恐慌是不可能的
- 通常是一个bug,通常是暂时的,因为您在第一个原型中放置了一个
展开
- 或者是非常特殊的情况
当您使用panics时,首先检查您是否按预期使用了该函数(如果您无法在不惊慌的情况下检查该函数,这是该库中的一个错误),然后要么修复它,要么自己修复它(如果可以)
除了以尽可能快的速度崩溃之外,没有合理的方法来应对偶然的恐慌。在您的程序生命周期中,恐慌不是偶然的。不要恐慌
我的意思是,这才是真正的解决办法:你必须避免恐慌,而不是在恐慌发生时试图从中恢复过来
一些语言随意使用异常来处理阻止某些操作的条件,并在不崩溃的情况下对其进行管理。
在Rust中,这些不受支持的条件是错误管理的,而不是恐慌
锈迹斑斑的恐慌是不可能的
- 通常是一个bug,通常是暂时的,因为您在第一个原型中放置了一个
展开
- 或者是非常特殊的情况
当您使用panics时,首先检查您是否按预期使用了该函数(如果您无法在不惊慌的情况下检查该函数,这是该库中的一个错误),然后要么修复它,要么自己修复它(如果可以)
除了以尽可能快的速度崩溃之外,没有合理的方法来应对偶然的恐慌。恐慌在你的程序生命中不是偶然的。对不起,我一直想用友好的大字写“不要恐慌”。我建议你强调一下,如果一个库无法在不恐慌的情况下处理(或检查)某个情况,那就是库的API设计中的一个错误?@KevinReid试图将此作为答案。对不起,我一直想用友好的大字写下“不要惊慌”。我建议强调一下,如果一个库无法在不惊慌的情况下处理(或检查)某个情况,那就是库的API设计中的一个缺陷吗?@KevinReid试图在答案中说明这一点。