展开全部
先定义一个空的类,该类就可以看作是一个异常类,这个异常类将 抛出和捕捉关联起来,当程序中抛出了一个错误,那么是抛出的错误因为异常类的关联,被捕捉(其实,该异常类的作用就等同于一个标志)
看看具体的使用:
#include<iostream>
using namespace std;
class wrong{}; //异常类
class people
{
public:
people(int i) { len = i; pt = new int[len]; }
int &operator[](int &r);
int getlen() { return len; }
private:
int len;
int *pt;
};
int &people::operator[](int &r)
{
if (r < len && r >= 0)
return pt[r];
else
throw wrong(); //抛出错误
}
int main()
{
people one(20);
try //查找错误
{
for (int i = 0; i < 50; i++) //因为数组的长度在调用构造函数的时候已经将其置为20,那么这里的50超出了数组长度
{
one[i] = i;
cout << one[i] << endl;
}
}
catch (wrong) //捕获抛出的错误
{
cout << "问题已经得到解决" << endl;
}
return 0;
}
2015-03-11
展开全部
三个点 ...
注意 try catch 只能捕获C++异常,其他语言的异常或硬件产生的异常不归他管。但通常可以有 API 使之转换成C++异常
注意 try catch 只能捕获C++异常,其他语言的异常或硬件产生的异常不归他管。但通常可以有 API 使之转换成C++异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一、填写catch(IOException | SQLException | Exception ex){
logger.error(ex);
throw new MyException(ex.getMessage());即可捕获异常。
二、具体代码如下:
BOOL CXXXApp::InitInstance()
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// 注意这里有一个顶层的trycatch块,并且使用catch(…)来捕获一切所有的异常
try
{
CXXXDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
}
catch(…)
{
// dump出系统的一些重要信息,并通知管理员查找出现意外异常的原因。
// 同时想办法恢复系统,例如说重新启动应用程序等
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
logger.error(ex);
throw new MyException(ex.getMessage());即可捕获异常。
二、具体代码如下:
BOOL CXXXApp::InitInstance()
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// 注意这里有一个顶层的trycatch块,并且使用catch(…)来捕获一切所有的异常
try
{
CXXXDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
}
catch(…)
{
// dump出系统的一些重要信息,并通知管理员查找出现意外异常的原因。
// 同时想办法恢复系统,例如说重新启动应用程序等
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
try{
// 需要捕获异常的代码段
。。。
} catch (Exception e) {
// 异常处理
。。。
}
// 需要捕获异常的代码段
。。。
} catch (Exception e) {
// 异常处理
。。。
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询