码迷,mamicode.com
首页 > 编程语言 > 详细

C语言异常处理

时间:2021-01-26 12:15:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:对比   src   har   异常情况   技术   产生   运算   exce   异常处理   

异常的概念
-程序在运行过程中可能产生异常
-异常(Exception)与Bug的区别
  异常是程序运行时可预料的执行分支
  Bug是程序中的错误,是不被预期的运行方式

异常(Exception)和Bug的对比
-异常
  运行时产生除0的情况
  需要打开的外部文件不存在
  数组访问时越界
-Bug
  使用野指针
  堆数组使用结束后未释放
  选择排序无法处理长度为0的数组

C语言经典处理方式:if ...else ...
void func(...)
{
  if(判断是否产生异常)
  {
    正常情况代码逻辑;
  }
  else
  {
    异常情况代码逻辑;
  }
}

技术图片
#include <iostream>
#include <string>

using namespace std;

double divide(double a, double b, int* valid)
{
    const double delta = 0.000000000000001;
    double ret = 0;
    
    if( !((-delta < b) && (b < delta)) )
    {
        ret = a / b;
        
        *valid = 1;
    }
    else
    {
        *valid = 0;
    }
    
    return ret;
}

int main(int argc, char *argv[])
{   
    int valid = 0;
    double r = divide(1, 0, &valid);
    
    if( valid )
    {
        cout << "r = " << r << endl;
    }
    else
    {
        cout << "Divided by zero..." << endl;
    }
    
    return 0;
}
技术图片

缺陷
-divide函数有3个参数,难以理解其用法
-divide函数调用后必须判断valid代表的结果
  当valid为true时,运算结果正常
  当valid为false时,运算过程出现异常

C语言异常处理

标签:对比   src   har   异常情况   技术   产生   运算   exce   异常处理   

原文地址:https://www.cnblogs.com/bruce1992/p/14322260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!