zoukankan      html  css  js  c++  java
  • C语言异常处理

    异常的概念
    -程序在运行过程中可能产生异常
    -异常(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时,运算过程出现异常

  • 相关阅读:
    ffmpeg参数说明
    【FFmpeg】FFmpeg常用基本命令
    ffmpeg最全的命令参数
    数据库总结
    linux redis安装及JAVA使用jedis
    记录一次工作中jvm被linux杀死的调查
    ExecutorService线程池submit的使用
    java四种引用与回调函数
    java排序
    NIO教程笔记
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14322260.html
Copyright © 2011-2022 走看看