在本文中,我们将讨论如何使用类来处理异常。
异常处理:
- 异常是程序在执行过程中遇到的运行时异常或异常情况。
- 有两种类型的例外:
- 同步异常
- 异步异常(例如:超出程序的控制范围,光盘故障等)。
- 为此,C++提供了以下专用关键字:
- try :表示可能引发异常的代码块。
- catch :表示抛出特定异常时执行的代码块。
- throw :用于引发异常。也用于列出函数引发但无法自行处理的异常。
问题陈述:
- 创建一个具有两个数据成员a和b的Numbers类。
- 编写迭代函数以查找两个数字的GCD。
- 编写一个迭代函数以检查任何给定的数字是否为质数。如果发现为真,则将异常抛出给MyPrimeException类。
- 定义自己的MyPrimeException类。
解决方案:
- 定义一个名为Number的类,该类具有两个私有数据成员a和b 。
- 将两个成员函数定义为:
- int gcd():计算两个数字的HCF。
- bool isPrime():检查给定的数字是否为质数。
- 使用用于初始化数据成员的构造函数。
- 以另一个名为Temporary的类为例,当抛出异常时将调用该类。
以下是说明使用类的异常处理的概念的实现:
C++
// C++ program to illustrate the concept
// of exception handling using class
#include
using namespace std;
// Class declaration
class Number {
private:
int a, b;
public:
// Constructors
Number(int x, int y)
{
a = x;
b = y;
}
// Function that find the GCD
// of two numbers a and b
int gcd()
{
// While a is not equal to b
while (a != b) {
// Update a to a - b
if (a > b)
a = a - b;
// Otherwise, update b
else
b = b - a;
}
// Return the resultant GCD
return a;
}
// Function to check if the
// given number is prime
bool isPrime(int n)
{
// Base Case
if (n <= 1)
return false;
// Iterate over the range [2, N]
for (int i = 2; i < n; i++) {
// If n has more than 2
// factors, then return
// false
if (n % i == 0)
return false;
}
// Return true
return true;
}
};
// Empty class
class MyPrimeException {
};
// Driver Code
int main()
{
int x = 13, y = 56;
Number num1(x, y);
// Print the GCD of X and Y
cout << "GCD is = "
<< num1.gcd() << endl;
// If X is prime
if (num1.isPrime(x))
cout << x
<< " is a prime number"
<< endl;
// If Y is prime
if (num1.isPrime(y))
cout << y
<< " is a prime number"
<< endl;
// Exception Handling
if ((num1.isPrime(x))
|| (num1.isPrime(y))) {
// Try Block
try {
throw MyPrimeException();
}
// Catch Block
catch (MyPrimeException t) {
cout << "Caught exception "
<< "of MyPrimeException "
<< "class." << endl;
}
}
return 0;
}
输出:
GCD is = 1
13 is a prime number
Caught exception of MyPrimeException class.
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。