Perl 最佳實務(節選) --- 13

來源:互聯網
上載者:User

標籤:

第十三章:錯誤處理 壹陸玖.

要拋出異常,不要返回特殊值或設定標記。 壹柒零.

讓失敗的內建函數也拋出異常。 壹柒壹.

讓所有上下文中的失敗都是致命失敗。

       #把不可接受的失敗行為改為拋出異常 ……

       useFatal qw( :void locate_and_open);

       #稍後 ……

       formy $filename () {

              my$fh = locate_and_open($filename);

              my$head = load_header_from($fh);

              print$head;

} 壹柒貳.

測試system內建函數的失敗時要當心一點。

       usePOSIX qw ( WIFEXITED);

       #稍後……

       WIFEXITED(system$cmd)

              Orcroak “Couldn’t run: $cmd ($OS_ERROR)”; 壹柒三.

對所有失敗都拋出異常,包括可複原的失敗。

       TRY:

       formy $try (1..$MAX_TRIES) {

              #如果資源成功地取得,就完成了……

              eval{

                     $resource= acquire_resource($resource_id);

                     LastTRY;

              };

              #如果不再嘗試,就報告不可複原的失敗

              croak($EVAL_ERROR ) if $try == $MAX_TRIES;

              #不然就在隨機拉長的時間間距後再試一次……

              nap(rand fibonacci($try)  );  ghd

       }

       do_something_using($resource); 壹柒肆.

從調用者的位置報告異常,而不要從拋出異常之處報告。 壹柒伍.

以接收者的方言編寫錯誤訊息。 壹柒陸.

以接收者的方言替每條錯誤訊息編寫說明文檔。 壹柒柒.

每當失敗資料必須傳給處理常式時,就使用異常對象。 壹柒捌.

當錯誤訊息可能改變時,就應使用異常對象。 壹柒玖.

當兩個或多個異常彼此相關時,就應使用異常對象。 壹捌零.

以MDF(most-derived-first,最底層的派生為先)次序捕獲異常對象。 壹捌壹.

自動建立異常類。 壹捌貳.

取出擴充的例外處理常式內的異常變數。

Perl 最佳實務(節選) --- 13

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.