【发布时间】:2011-09-26 19:47:25
【问题描述】:
我正在尝试用 C++ 实现队列。在此期间我遇到了这个问题。
void Queue::view()
{
int i;
try
{
if(Qstatus==EMPTY)
{
UnderFlowException ex = UnderFlowException("\nQUEUE IS EMPTY");
throw ex;
}
}
i=front;
cout<<"Queue contains...\n";
while(i <= rear)
{
cout<<queue[i]<<" ";
i++;
}
}
这给出了一个错误:
错误:在“i”之前预期“catch”
我认为出现这个问题是因为我没有在 try 块下面写 catch 块。 但是如果想在 main() 中编写 catch 块,(就像在这种情况下一样),我该怎么做呢?
以前,那我可以这样做吗?如果不是为什么?
【问题讨论】:
-
与问题无关,但您的 while 循环将永远运行,除非 queue[i] 增加 i(这不太可能)。
-
我正要在 SO 上第一次回答 :) 但是这些多核用户..
-
另一个问题可能是你为什么要添加
try块?如果是因为您预计会引发异常,那么catch似乎很明显丢失了。但我感觉你不太清楚 try catch 语句的用途,如果是这种情况,你可能想看看这里:cplusplus.com/doc/tutorial/exceptions -
如果你写
UnderFlowException ex("\nQUEUE IS EMPTY");看起来更干净 -
一个视图方法可能一开始就不应该抛出任何东西......为什么想要输出一个空队列会出错?更好地为非空队列是前提条件(pop)的操作保留 UnderFlowError。
标签: c++ exception-handling try-catch