C++ try catch 的用法
比如说两个数相除,除数不能为零,当除数为零时抛出异常,用代码要怎么实现,try和catch里分别要写些什么?...
比如说两个数相除,除数不能为零,当除数为零时抛出异常,用代码要怎么实现,try和catch里分别要写些什么?
展开
展开全部
catch(object^)表示捕获一个object类型的异常类。而这个类必须是在try语句块中被抛出的。例如:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string ex = "this is a exception";
try
{
cout<<"before throw"<<endl;
throw ex;
cout<<"after throw"<<endl;
}
catch(string &e)
{
cout<<e<<endl;
}
cout<<"end"<<endl;
}
以上这个例子也说明了,你这 个问题用try,catch是不能解决的。捕捉到异常后,是不再执行下一条语句,当然如果你放在catch语句块之后,是可以执行的。
将抛出异常的语句放在try中,在catch中处理该异常,在catch之后继续执行就可以了。
希望可以帮助到你
#include<iostream>
#include<string>
using namespace std;
int main()
{
string ex = "this is a exception";
try
{
cout<<"before throw"<<endl;
throw ex;
cout<<"after throw"<<endl;
}
catch(string &e)
{
cout<<e<<endl;
}
cout<<"end"<<endl;
}
以上这个例子也说明了,你这 个问题用try,catch是不能解决的。捕捉到异常后,是不再执行下一条语句,当然如果你放在catch语句块之后,是可以执行的。
将抛出异常的语句放在try中,在catch中处理该异常,在catch之后继续执行就可以了。
希望可以帮助到你
展开全部
#include <iostream>
using namespace std;
void division(int dividend,int divisor){
int result=0;
if(divisor==0) throw ("除数不能为零."); // 使用throw关键字抛出异常
result=dividend/divisor;
cout<<result<<endl;
}
int main()
{
try
{
division(4,0);
return 0;
}
catch (const char *err_msg)
{
cout<<err_msg<<endl;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
throw抛出的是类型
throw(0); 说明你抛出的是int类型!
所以在try下方 catch为int类型时捕获异常
你把throw改成'a'之类的就是char类型了!
catch就可以捕获char类型了!
请采纳。
throw(0); 说明你抛出的是int类型!
所以在try下方 catch为int类型时捕获异常
你把throw改成'a'之类的就是char类型了!
catch就可以捕获char类型了!
请采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2016-10-31 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在任何自己得到不想要的结果的时候进行中断,比如在进行数据库事务操作的时候,如果某一个语句返回SQL_ERROR则直接抛出异常,在catch块中进行事务回滚)
#include <iostream>
#include <exception>
using namespace std;
int main () {
try
{
throw 1;
throw "error";
}
catch(char *str)
{
cout << str << endl;
}
catch(int i)
{
cout << i << endl;
}
}
也可以自己定义异常类来进行处理:
#include <iostream>
#include <exception>
using namespace std;
//可以自己定义Exception
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
}myex;
int main () {
try
{
if(true) //如果,则抛出异常;
throw myex;
}
catch (exception& e)
{
cout << e.what() << endl;
}
return 0;
}
同时也可以使用标准异常类进行处理:
#include <iostream>
#include <exception>
using namespace std;
int main () {
try
{
int* myarray= new int[100000];
}
catch (exception& e)
{
cout << "Standard exception: " << e.what() << endl;
}
return 0;
}
#include <iostream>
#include <exception>
using namespace std;
int main () {
try
{
throw 1;
throw "error";
}
catch(char *str)
{
cout << str << endl;
}
catch(int i)
{
cout << i << endl;
}
}
也可以自己定义异常类来进行处理:
#include <iostream>
#include <exception>
using namespace std;
//可以自己定义Exception
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
}myex;
int main () {
try
{
if(true) //如果,则抛出异常;
throw myex;
}
catch (exception& e)
{
cout << e.what() << endl;
}
return 0;
}
同时也可以使用标准异常类进行处理:
#include <iostream>
#include <exception>
using namespace std;
int main () {
try
{
int* myarray= new int[100000];
}
catch (exception& e)
{
cout << "Standard exception: " << e.what() << endl;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询