当前位置:编程学习 > C/C++ >>

C++如何使用try-catch

最近在做那个银行家算法,因为要输入的东西太多了,且还要保持程序的鲁棒性,所以想到用try-catch语句来捕捉输入异常,我的意图是用catch来捕捉输入异常,并且让用户重新输入!应该要如何实现?
答案:/// 资源数 

  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];

  }

  }

  }

  }

  }

用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;
 }
 
}

try

{

代码

}catch(...)//这里的...三个点是任何错误的意思

{

这里写错误

}

哥你烧糊涂了吧

上一个:ping的C++代码及释义
下一个:c++如何获取当前系统名称

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,