菜鸟问个c++问题

wey524 2011-07-25 09:34:35
try块、catch、throw到底是干什么用的 没太看懂。。。。。求详细点解答
...全文
136 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sydney1979 2011-07-30
  • 打赏
  • 举报
回复
try。。catche是异常处理机制,不过感觉在C++里碰到的比较少,C++的程序员也不大习惯写这个,Java里非常普遍。
try。。catche的好处是把业务逻辑的代码和异常处理的代码区分开来了。
try后面跟的是业务逻辑的代码,也就是程序要完成的功能,catche里仅仅对出现的异常进行处理。而业务逻辑的代码有可能会出现异常,如果出现异常就会抛出异常,抛出的异常则交给后面的catche处理,当然仅仅是在两者的异常类型匹配的时候。
金陵石 2011-07-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]

throw我的异常,让别人去catch吧~~~~~~~
[/Quote]

生猛的解释。。。偷去qq签名了
wey524 2011-07-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 huashengmi008 的回复:]

wey524,建议你买本C++的书好好看看学习。清华大学的谭浩强教授编写的《C++面向对象程序设计》挺好。。。
[/Quote]

看C++ primer呢
wey524 2011-07-29
  • 打赏
  • 举报
回复
7#例子给的不错 就是看的太累了。。。。 配合书看明白一些

但这句话真经典:
[Quote=引用 1 楼 supermegaboy 的回复:]
throw我的异常,让别人去catch吧~~~~~~~
[/Quote]
huashengmi008 2011-07-29
  • 打赏
  • 举报
回复
wey524,建议你买本C++的书好好看看学习。清华大学的谭浩强教授编写的《C++面向对象程序设计》挺好。。。
Isnis-fallen 2011-07-29
  • 打赏
  • 举报
回复
try包含的代码运行时如果发生异常程序转到catch里运行. throw是把异常重新抛出给上一级去处理
JiangXiang 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]

throw我的异常,让别人去catch吧~~~~~~~
[/Quote]
++
qianfoyuan 2011-07-25
  • 打赏
  • 举报
回复
给个例子
#include <stdio.h>
template <class T>
class CStack
{
public:
CStack(int nSize) : m_nSize(nSize),m_nTop(-1)
{
m_pStack = static_cast<T*>(new T[nSize]);
memset(m_pStack,0,sizeof(T)*nSize);
}
virtual ~CStack()
{
if(m_pStack)
{
free(m_pStack);
m_pStack = 0;
}
}

public:
void Push(T tData)
{
if(m_nTop < m_nSize)
{
m_pStack[++m_nTop] = tData;
}
else
{
//打印堆栈已经满
throw (int)(0);
}
}
T Pop()
{
if(m_nTop > -1)
{
return m_pStack[m_nTop--];
}
else
{
//打印堆栈为空
throw (int)(0);
}
}
T GetTop() const/*获取栈顶元素*/
{
//返回栈顶元素
return m_pStack[m_nTop];
}
bool IsEmpty() const/*判断元素是否为空*/
{
return m_nTop == -1 ? true : false;
}
bool IsFull() const/*判断元素是否为满*/
{
return m_nTop == m_nSize-1 ? true:false;
}
bool Empty()
{
m_nTop = -1;//将栈元素置空
return true;
}
private:
T* m_pStack;
int m_nSize;
int m_nTop;
};

int main(int argc,char* argv[])
{
CStack<int> stack(12);
try
{
for(int i = 0;i < 13;i++)
{
stack.Push(i);
}
}
catch(int)
{
fprintf(stdout,"stack is overflow\n");
}
}

记住给分啊.
wey524 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yuerzm 的回复:]

C/C++ code

try
{
//尝试运行语句
...
}
catch
{
//如果运行时出现问题,就捕捉
}
throw
{
//抛出异常
}
[/Quote]



返回值是什么,catch&throw{}中是什么,是在调试中用到的么?
LucEaspe 2011-07-25
  • 打赏
  • 举报
回复

try
{
//尝试运行语句
...
}
catch
{
//如果运行时出现问题,就捕捉
}
throw
{
//抛出异常
}
hyccai 2011-07-25
  • 打赏
  • 举报
回复
学习来的
wey524 2011-07-25
  • 打赏
  • 举报
回复
。。。。。详细点。。。。。
adw其 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]
throw我的异常,让别人去catch吧~~~~~~~
[/Quote] +++ 哈哈.动听的解释
飞天御剑流 2011-07-25
  • 打赏
  • 举报
回复
throw我的异常,让别人去catch吧~~~~~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧