exception-safe

    4熱度

    1回答

    資源獲取初始化(RAII)習慣用法和try-finally語句構成編寫exception safe編程的傳統方法的基礎。 我的問題是:是否有類似於C#上的Scope Guard Statement?

    2熱度

    3回答

    我只是不記得用於這個和其他相關屬性的術語。 編輯 - 也許這樣的概念不存在,但我記得閱讀有效的C++(或更有效的C++),他主張使用交換提交更改最後在函數中的東西,因爲向量交換函數保證不拋出一個例外。

    0熱度

    2回答

    我正在使用.Net HtmlTextWriter來生成HTML。 try { htw.RenderBeginTag(HtmlTextWriterTag.Span); htw.Write(myObject.GenerateHtml()); htw.RenderEndTag(); } catch (Exception e) { GenerateHtm

    3熱度

    6回答

    有沒有辦法獲得有關Java標準類的異常安全方面的一些細節?主要使用C++和C#,我對Java異常規範感到困惑,所以我需要理解處理異常的正確方法。 更具體地說,我們來考慮一下ServerSocket。它的對象一旦構建就會開始監聽傳入的連接。然後,您應該使用accept()接受連接(如果有人試圖連接)。 如果您以前使用setSoTimeout()配置服務器套接字,則會發生以下變化:accept()將丟

    4熱度

    3回答

    編寫類(使用copy-and-swap idiom)時的一般指導原則是提供非拋出交換成員函數。 (Effective C++, 3rd edition, Item 25和其他資源) 但是,如果我不能提供nothrow保證,因爲我的課程使用不提供交換操作的第三方類成員? // Warning: Toy code !!! class NumberBuffer { public: ...

    10熱度

    5回答

    我只是一個初出茅廬的程序員,至少試圖編程比最好的情況更多。我一直在閱讀Herb Sutter的「Exceptional C++」,並且迄今爲止已經進行了三次異常安全章節的討論。然而,除了他提出的例子(一個Stack)之外,我不確定什麼時候我應該爭取異常安全與速度,以及什麼時候這很簡單。 例如,我目前的家庭作業項目是一個雙向鏈接列表。既然我已經編寫了其中的一些,我想花時間去深入一些更深入的概念,比如

    2熱度

    2回答

    這種方法不安全嗎? #include <tr1/memory> Foo * createFoo() { return new Foo(5); } int main() { std::tr1::shared_ptr<Foo> bar(create()); return 0; } 或者這將是最好的createFoo返回一個shared_ptr<Foo

    0熱度

    1回答

    從std::unique_ptr<>()的文檔中,初始化指針時可能發生的情況對我而言並不清楚。 當分配std::shared_ptr<>()時,它分配一個內存緩衝區來處理引用計數器。所以我可能會得到一個std::bad_alloc異常。 當初始化一個唯一的指針時會發生類似的事情嗎? 我在問這個問題,因爲如果這樣做的話,我可能實際上失去了我試圖通過唯一指針刪除的內容。例如: void deleter

    6熱度

    4回答

    每當我需要動態分配的對象添加到載體中我一直在做下列方式: class Foo { ... }; vector<Foo*> v; v.push_back(new Foo); // do stuff with Foo in v // delete all Foo in v 這只是工作和許多其他人似乎做同樣的事情。 今天,我瞭解到vector :: push_back可以拋出異常。這