try到底能捕捉哪些错误呢?

allforly 2003-10-17 11:46:31
像这样的错误它就捕捉不到:
try{
printf("%s\n", 1);
}
catch(const exception &e) {
cout<<e.what()<<endl;
abort();
}
请大家说说try{}catch{}throw{}的范围有多大
...全文
76 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
williamVII 2003-10-17
  • 打赏
  • 举报
回复
楼主试试这个:

#include <stdio.h>
#include <stdlib.h>
int main()
{
try
{
printf("%s\n", 1);
}
catch(...) {
printf("error!");
abort();
}
return 0;
}
Andy84920 2003-10-17
  • 打赏
  • 举报
回复
这要看你怎么try了。
它可以捕捉所有的异常,而不是说是语法错误。
如果你的printf也会抛出异常的话,就可以捕捉到啊。
但编译器认为这是一个语法错误,所以根本编译不过去。
异常捕捉只是运行时刻需要的。它是异常!
ttlb 2003-10-17
  • 打赏
  • 举报
回复
上一个例子错了,试试这个。
#include <iostream>
using namespace std;

class aa
{
public:
aa(){};
};

void main()
{
try
{
throw aa();
}
catch(aa)
{
cout<<"error" << endl;
}
}
ttlb 2003-10-17
  • 打赏
  • 举报
回复
catch 是用来捕捉 异常 的,不是用来捕捉错误的。
抛出的异常要自己写。
class aa
{
aa(){};
};

try
{
throw aa();
}
catch(aa)
{
cout<<"error" << endl;
}
sxdtwp 2003-10-17
  • 打赏
  • 举报
回复
try的范围为花括弧所包含的范围,catch跟在try块后无所谓范围,根据throw抛出的类型从第一个catch依次找匹配类型,直到找到一个最匹配的然后执行catch中的语句。
pengzuoli 2003-10-17
  • 打赏
  • 举报
回复
我也来学习一下.
Tangyongkang 2003-10-17
  • 打赏
  • 举报
回复
try catch

可以捕捉到语法错误以外的所有错误!!
I Think!
Wolf0403 2003-10-17
  • 打赏
  • 举报
回复
诶,printf 永远不会释放一个异常出来的
异常是 C++ 的东西,printf 是 C 的啊
pxwzd123 2003-10-17
  • 打赏
  • 举报
回复
呵呵,如果要捕捉语法错误的话,那岂不要你自己编成一个语法分析器了

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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