2017-05-28 95 views
1

經過幾年的教學,我即將創建自己的第一個真正的C++應用程序(一個2D遊戲)。我遇到的問題是很多時候教程經常跳過正確的錯誤處理技術(或者做最低限度的工作)。爲了嘗試學習錯誤處理的工作方式,我開始嘗試瞭解C錯誤代碼和errno及其優缺點。在此之後,我查看了C++ 11的std::error_code/std::error_condition,但是我很難理解它們對errno等的重要性和改進。究竟是什麼使得像std::error_code改進了errnostd :: error_code/error_condition優於errno嗎?

+2

只是指出:你是否已經使用異常? –

+0

由於可能的運行時間開銷和我的單線程遊戲的性能需求,我試圖迴避它們。 – Jason

+0

'std :: error_code'更安全。 – AndyG

回答

0

errno是一種非常糟糕的方式來處理今天的計算機中的錯誤,因爲它不是線程安全的。如果你想製作遊戲,你很可能需要線程。

std :: error_code實際上可以將errno包裝成可以將它們轉換爲自己的錯誤的附加改進。

看看https://www.youtube.com/watch?v=w7ZVbw2X-tE,我相信你會對error_code更有智慧。

關於免除的問題,請確保您對待他們是正確的。在嵌入式系統中,您通常無法承受例外,因爲您不知道他們將花費多少時間,他們將佔用更多空間。然而,在遊戲中,AAA遊戲公司確實不使用例外情況,但他們編寫了自己的特殊容器來實現這一點(例如參見EASTL和WG21-SG14庫和討論)。 如果您正在編寫您的第一款遊戲,請使用標準方法,包括例外情況,因爲您無法編寫自己的東西。如果拋出一個異常並且你沒有捕捉到它,你的程序將終止並學習。

確保自學如何寫現代 C++,至少使用C++ 14和物資,這都將減少與存儲的安全性和脫髮你的問題的功能;)