Daily Archives: November 26, 2019

exception safety

整理一下David Abrahams提出的exception safety幾個exception handling level 這在設計function時抱持這個概念非常重要, 因為對使用function的使用者來說, 常常在使用C++的function時,會擔心function失敗時的行為。 使用者角度處理exception handling時,不確定該function到底可能會丟出哪些exception,而造成困擾。 因為可能發生的exception不單是看呼叫的function本身, 該function內部呼叫的函式有可能也會產生exception。 如果真的不確定function可能會丟出哪些exception,最好的方式就是將exception往外傳。 當exception往外傳時,代表function流程中斷了,因此這時候就需要思考function exception safety gurantee。 他的概念有點類似資料庫transaction integrity,當transcation failure, 資料庫內容的一致性要達到什麼程度。例如ACID裡的C – consistency類似exception safety的Basic exception safety(invariants在function前後保持一致) Consistency ensures that a transaction can only bring the database from one valid state … Continue reading

Posted in C++ idioms | Leave a comment