C++如何使用try-catch
最近在做那个银行家算法,因为要输入的东西太多了,且还要保持程序的鲁棒性,所以想到用try-catch语句来捕捉输入异常,我的意图是用catch来捕捉输入异常,并且让用户重...
最近在做那个银行家算法,因为要输入的东西太多了,且还要保持程序的鲁棒性,所以想到用try-catch语句来捕捉输入异常,我的意图是用catch来捕捉输入异常,并且让用户重新输入!应该要如何实现?
展开
5个回答
2013-06-25
展开全部
/// 资源数 public static int resourceNumber; /// 进程数 public static int processNumber; /// 可用资源数组 public static int[] Available; /// 工作向量 public static int[] work; /// 它表示系统是否有足够的资源分配给进程 public static bool[] Finish; /// 最大需求矩阵 public static int[][] Max; /// 分配矩阵 public static int[][] Allocation; /// 需求矩阵 public static int[][] Need; /// 安全序列 public static int[] SafeSequence; /// 资源请求向量 public static int[] Request; 算法思想: 主要是:递归+深度优先搜寻+回溯 算法源代码如下: /// 深搜+回溯实现银行家算法 /// <param name="n">已完成的进程数</param> public void DFS_searchSafeSequence(int n) { if (n == processNumber) { //找到一个安全序列,可以显示所有安全序列 //显示在richTextBoxshow.Text上 for (int i = 0; i < processNumber; i++) { richTextBoxshow.Text += SafeSequence[i] + " "; } richTextBoxshow.Text += "\n"; return; } for (int i = 0; i < processNumber; i++) { if (Finish[i] == false)//进程尚未完成 { //判断现有资源是否可以满足这个进程 bool isOK = true; for (int j = 0; j < resourceNumber; j++) { if (Need[i][j] > work[j]) { isOK = false; break; } } //可以满足 if (isOK) { //先试探的将资源分配给这个进程 for (int j = 0; j < resourceNumber; j++) { work[j] += Allocation[i][j]; } //已经完成 Finish[i] = true; //加入安全序列 SafeSequence[n] = i; //继续搜索 DFS_searchSafeSequence(n+1); //回溯 Finish[i] = false; SafeSequence[n] = -1; for (int j = 0; j < resourceNumber; j++) { work[j] -= Allocation[i][j]; } } } } }
展开全部
C++语言中try-catch 语句由一个 try 块后跟一个或多个 catch 子句构成,这些子句指定不同的异常处理程序。
try中的语句用于来放容易出错的代码,如果出错了它就不执行try下面的代码了,直接跳到catch里面去。如果没出异常则catch里面的代码不执行,它还有一个关键字finally它里面的代码无论有没有出异常它都要运行。
try-catch 的语句格式:
try
{
//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容
}
catch
{
//除非try里面执行代码发生了异常,否则这里的代码不会执行
}
finally
{
//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-25
展开全部
用try catch来实现重新输入好像不是太合理捕获到异常后 一般不会尝试继续执行失败的方法给你个例子看看吧#include <iostream>
using namespace std;
int main()
{
cin.exceptions(ios::failbit);
int i;
try
{
cin >> i;
}
catch(std::ios_base::failure e)
{
cout<<"输入错误"<<endl;
}
}
using namespace std;
int main()
{
cin.exceptions(ios::failbit);
int i;
try
{
cin >> i;
}
catch(std::ios_base::failure e)
{
cout<<"输入错误"<<endl;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-25
展开全部
try{代码}catch(...)//这里的...三个点是任何错误的意思{这里写错误}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-25
展开全部
哥你烧糊涂了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询