請我想讓別人向我解釋術語以及如何「按價值拋出並吸引我的參考」。有人對我說,我仍然是一個新的程序員,我似乎還不明白。按價值拋出並在C++中通過引用捕獲
-1
A
回答
2
孔捕捉引用是
...}catch(myException &me){ }
所以,當你說catch(myException me)
,它會創建一個新的對象,但在基準情況下,它沒有。
另外,作爲catch塊中引用的異常意味着在訪問處理異常的對象時可以使用多態行爲。
如果異常是派生類型,這非常有用。 Click Me For More Info
+0
我認爲「拋出價值」意味着「沒有必要說'new',即'throw std :: runtime_error (「message」)'而不是'throw new std :: runtime_error(「message」)' –
3
「按值拋出」意味着不拋出(原始)指針。
當指針被拋出有雙delete
一個很好的機會(這是UB)或無delete
(泄漏內存),因爲一個處理程序如何才能知道是否是應該delete
與否?
「通過參考捕獲」意味着通過參考捕獲,優選參考const
。 這樣可以避免切分異常對象。例如,處理程序可以簡單地使用dynamic_cast
來確定std::exception
是否真的是std::system_error
。
相關問題
- 1. 通過const引用捕獲異常並拋棄const
- 2. 在Java中捕獲並拋出NullPointerException
- 3. 捕獲的std ::功能通過價值
- 4. 獲取價值,並通過在警予
- 5. C++中的lambda函數在priority_queue中通過引用捕獲
- 6. C++ catch塊 - 通過值或引用捕獲異常?
- 7. VB6按值傳遞並通過引用
- 8. 通過按鈕獲得價值
- 9. C++ 11通過值捕獲的lambda捕獲在聲明點
- 10. 在lambda中,如何通過值捕獲引用
- 11. 通過JNI從DLL中拋出Java中捕獲異常
- 12. C++通過getter獲得私有價值
- 13. 目標C - 按值傳遞,並通過引用
- 14. Java和C++按值傳遞並通過引用
- 15. 在JRuby中拋出Java異常並使用Java捕獲它
- 16. 例外 - 立即拋出並捕獲
- 17. 拋出異常並捕獲異常?
- 18. C++異常拋出值引用
- 19. C++ 11 Lambda通過捕獲
- 20. Javascript通過引用與價值
- 21. 通過javascript獲取價值使用PHP獲取價值
- 22. 通過引用禁止捕獲
- 23. 通過引用捕獲std :: exception?
- 24. 通過引用捕獲對象
- 25. C#通過引用或值
- 26. PowerShell中捕獲調用堆棧拋出
- 27. 在dropwizard中拋出/捕獲AuthenticationException
- 28. 這是通過引用還是按價值傳遞?
- 29. C++:拋出派生的shared_ptr並捕獲基地的shared_ptr?
- 30. C++通過引用返回並通過const引用值返回被複制
http://ptgmedia.pearsoncmg.com/images/0321113586/items/sutter_item73.pdf – Jamal