C++对C的改进和拓展\异常处理

简介: C++对C的改进和拓展\异常处理

异常

  • 程序中的错误
  • 语法错误
  • 编译错误
  • 链接错误
  • 运行错误
  • 不可预料的逻辑错误
  • 可以预料的运行异常

异常处理

  • 将异常交给上层函数处理,减轻底层负担,提高程序运行效率

异常处理步骤

  • try:检查异常
  • throw:抛出异常
  • catch:捕捉异常信息后进行处理

try和catch >> 上级函数中处理

throw >> 可能出现异常的当前函数中处理

#include <iostream>
#include <stdio.h>
using namespace std;
int divide(int x, int y)
{
  if (y == 0)
    throw y;  //分母为0则抛出异常
  return x / y;
}
void output(char x, char y,int m,int n)
{
  printf("%c/%c= ", x, y);
  printf("%d\n",divide(m, n));
}
int main()
{
  int a = 10, b = 5, c = 0;
  try   //检查是否出现异常
  {
    output('a', 'b', a, b);
    output('b', 'a', b, a);
    output('a', 'c', a, c);
    output('c', 'a', c, a);
  }
  catch (int)
  {
    cout << "except of divide zero" << endl;
  }
  cout << "计算结束" << endl;
  
  return 0;
}

try在先,catch在后,且中间不能有任何其它语句

只能有一个try块,但可以有多个catch块对应不同的异常

过程:

没有发生异常,则跳过catch块

try中出现异常,throw抛出异常信息转到上级函数的catch,寻找与之匹配的子句(就像上面提供的代码中的catch一样)。处理完该异常之后,try后面的语句不再执行,转去执行catch块后面的语句

目录
相关文章
|
3月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
76 2
|
6月前
|
安全 C++
C++中的异常处理与错误处理机制
C++中的异常处理与错误处理机制
76 0
|
5月前
|
C++
C++一分钟之—异常处理try-catch
【6月更文挑战第22天】C++异常处理机制,借助`try`、`catch`、`throw`管理错误,优雅处理异常,防止程序崩溃。`try`包围可能出错的代码,`catch`捕获异常,`throw`引发异常。基本结构是:`try-catch`块中,未捕获的异常将向上抛出。多`catch`块可按顺序捕获不同类型的异常。易错点包括忽视异常传播、不精确的`catch`和资源未清理。通过精确捕获、RAII技术和适当的异常策略,提升代码健壮性和效率。
42 1
|
5月前
|
C语言 C++
C++对C的改进和拓展\string类型
C++对C的改进和拓展\string类型
29 1
|
5月前
|
C++
C++对C的改进和拓展\名字空间
C++对C的改进和拓展\名字空间
25 1
|
5月前
|
C++
C++对C的改进和拓展:I/O 流
C++对C的改进和拓展:I/O 流
26 1
|
5月前
|
C++
C++核心技术要点《异常处理详解》
C++核心技术要点《try-throw-catch异常处理详解》
51 2
|
5月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
48 0
|
6月前
|
程序员 编译器 C++
C++中的异常处理:技术详解与实践
C++中的异常处理:技术详解与实践
113 1
|
5月前
|
C++
C++对C的改进和拓展\动态内存空间管理
C++对C的改进和拓展\动态内存空间管理
24 0