本系列錄製的影片主要放在B站上Rust死靈書學習影片
Rust 死靈書相關的原始碼資料在github.com/anonymousGiga/Rustonomi...
- 有些值可以為空,則使用Option;
- 如果發生了錯誤,而錯誤可以被正常處理,用Result;
- 如果發生了錯誤,但是沒辦法正常處理,就讓執行緒Panic;
- 如果發生了更嚴重的問題,則終止(abort)程式。
在Rust中,Panic只能被任務的所有者捕獲,而捕獲後必須立即對它進行相應處理,否則任務會自己停止。
- 捕獲panic:catch_panic可以在不啟動一個執行緒的情況下捕獲panic,示例如下:
use std::panic;
fn main() {
let result = panic::catch_unwind(|| {
println!("hello!");
});
assert!(result.is_ok());
let result = panic::catch_unwind(|| {
panic!("oh no!");
});
assert!(result.is_err());
println!("Hello, world!");
}
- Rust的展開方式沒有試圖和其它語言的展開方式相容,因此,從其它語言展開Rust的棧或者從Rust展開其它語言的棧,屬於未定義行為。所以必須在進入FFI之前捕獲所有的Panic!
本作品採用《CC 協議》,轉載必須註明作者和本文連結