我試着約20嘗試&閱讀大量的網頁在過去2小時,不能找出我在做什麼錯在這裏:在C++類指明函數拋出自定義異常
#pragma once
#include <exception>
using namespace std;
class EmptyHeap : public exception {
public:
virtual const char* what() const throw()
{
return "The heap is empty!";
}
};
然後堆類,公共方法:
void remove() throw()//EmptyHeap
{
if (isEmpty())
{
EmptyHeap broken;
throw broken;
}
...
此代碼的工作,但原來的標題是:
void remove() throw EmptyHeap;
有沒有辦法指定一個方法在C++中拋出什麼異常,還是隻是一個Java事物?
[正確的語法](http://en.cppreference.com/w/cpp/language/except_spec)是'throw(EmptyHeap)'(注意圓括號)。進一步注意,異常規範已被棄用。只要放下它。 –
[C++異常規範替換](http://stackoverflow.com/q/14609329/669576) –
請注意,這應該很可能不是一個例外。如何從「EmptyHeap」異常中「恢復」?從空堆中刪除某些內容是一種編程錯誤,因此正確的做法是爲'isEmpty'添加前提條件。這意味着你爲類的用戶記錄了前提條件,並在代碼中放置了一個'assert(!isEmpty());'。 –