タグ

panicに関するmasterqのブックマーク (3)

  • Goのnil panicを防ぐ静的解析ツール:nilaway

    nilaway どんなもの? nil パニックによるランタイムエラーになる箇所を指摘してくれる静的解析ツール スタンドアロンで動く。golangci-lintで使用するにはカスタマイズが必要。 先行技術やツールと比べてどこがすごい? 標準パッケージに同梱されているnilness[1]ではチェックできないnil パニックとなりうる箇所を指摘する 関数やパッケージの境界を跨いでnilフローを追跡 nil インターフェース値を報告 例えば以下のコードでは、nilnessはエラーを報告してくれないが、nilawayはnilパニックを報告してくれる。 var p *P if someCondition { p = &P{} } print(p.f) // nilness reports NO error here, but nilaway does. 技術のキモはどこ? Our main idea

    Goのnil panicを防ぐ静的解析ツール:nilaway
  • 【Rust】Releaseビルドでも整数オーバーフローをpanicさせる - Qiita

    Rustで次のように整数オーバーフローしてしまう式を書いた場合、Debugビルドではpanicを起こしますが、 Releaseビルドでは無視して桁あふれします。 fn main() { // 10と数値リテラルで書くとコンパイル時にオーバーフローを // 検知してエラーになってしまうので、検証用に回避 let ten: u8 = (0..10).len() as u8; let u8_overflow: u8 = u8::MAX + ten; println!("{}", u8_overflow); }

    【Rust】Releaseビルドでも整数オーバーフローをpanicさせる - Qiita
    masterq
    masterq 2024/08/09
    "Rustで次のように整数オーバーフローしてしまう式を書いた場合、Debugビルドではpanicを起こしますが、 Releaseビルドでは無視して桁あふれします"
  • Rustのパニック機構 - 簡潔なQ

    概要: Rustのパニック機構は異常終了の処理を安全に行うためにある。この動作を詳しくみていく。 パニックとは何か Rustには2つの異なる例外処理機構があります。 発生源 対処方法 例 パニック プログラミングエラー 原則として捕捉しない assert!() 境界外参照 Result 例外的な入力 必要に応じて捕捉 I/Oエラー (File::read) パースエラー (str::parse) パニックとResultの関係についてはTRPL第2版第9章、未定義動作とパニックの関係についてはRustonomiconのUnwindingの章などが参考になります。 パニックを想定した安全性 Rustではたとえパニック状態でも未定義動作だけは絶対に避ける必要があります。そのため以下の関数は不健全 (unsound)です。 use std::ptr; // この関数はRustではunsound (

    Rustのパニック機構 - 簡潔なQ
  • 1