异常的概念
-程序在运行过程中可能产生异常
-异常(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 = ; if( !((-delta < b) && (b < delta)) )
{
ret = a / b; *valid = ;
}
else
{
*valid = ;
} return ret;
} int main(int argc, char *argv[])
{
int valid = ;
double r = divide(, , &valid); if( valid )
{
cout << "r = " << r << endl;
}
else
{
cout << "Divided by zero..." << endl;
} return ;
}

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

C语言异常处理的更多相关文章

  1. 第63课 C语言异常处理

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

  2. go语言异常处理

    go语言异常处理 error接口 go语言引入了一个关于错误错里的标准模式,即error接口,该接口的定义如下: type error interface{ Error() string } 对于要返 ...

  3. Go语言异常处理defer\panic\recover

    Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱.因为开发者很容易滥用异常, ...

  4. c语言异常处理机制

    异常处理机制:setjmp()函数与longjmp()函数 C标准库提供两个特殊的函数:setjmp() 及 longjmp(),这两个函数是结构化异常的基础,正是利用这两个函数的特性来实现异常. 所 ...

  5. C语言异常处理和连接数据库

    #include <stdio.h> #include <setjmp.h> jmp_buf j; void Exception(void); double diva(doub ...

  6. C语言异常处理之 setjmp()和longjmp()

    异常处理之除0情况 相信大家处理除0时,都会通过函数,然后判断除数是否为0,代码如下所示: double divide(doublea,double b) { const double delta = ...

  7. C语言异常处理编程的三个境界

    http://blog.csdn.net/treefish2012/article/details/17466487 这是上一次看完Herb Sutter的<Exceptional C++> ...

  8. GO语言异常处理03---自定义异常

    package main import ( "fmt" "time" ) /* type error interface { Error() string } ...

  9. GO语言异常处理02---返回错误

    package main import ( "errors" "fmt" "math" ) /*计算圆面积,同时返回[结果-错误对]*/ f ...

随机推荐

  1. ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/itsdangerous' Consider using the `--user` option or check the permissions

    近期练习flask写个blog, 安装flask扩展时 pip install Flask-WTF 报ERROR: Could not install packages due to an Envir ...

  2. github.com/pkg/errors库学习

    为了理解go error,进一步学习github.com/pkg/errors作的训练. http://www.shtml.net/article/content/tok/48369/id/37733 ...

  3. 201871010102-常龙龙《面向对象程序设计(java)》第十六周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  4. java 内存溢出总结

    堆 /** * jvm 参数: -Xms5m -Xmx5m -Xmn2m -XX:NewSize=1m * @author admin * */ public class HeapOutOfMemor ...

  5. WPF 精修篇 DataGrid 筛选

    原文:WPF 精修篇 DataGrid 筛选 DataGrid也可以分组 但是用的地方不多 就没写 筛选还是可以的 比如Datagrid数据量比较大 要做数据筛选 贴码 <DataGrid x: ...

  6. Android Monkey的用法(一)

      Monkey 简介 ü  Monkey 是一个命令行工具,可以运行在 Android 模拟器里或真实设备中.它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入.触摸屏输入 ...

  7. IT兄弟连 Java语法教程 逻辑运算符

    表8中显示的布尔逻辑运算符只能操作布尔类型的操作数,所有的二元逻辑运算符都可以组合两个布尔值,得到的结果为布尔类型. 表8  布尔逻辑运算符 布尔逻辑运算符”&“.”|“以及”^“,都会布尔值 ...

  8. app自动化测试初体验

    一.appium环境开启 1.开启MUMU模拟器/真机(真机需要开启“USB开发调试模式”),使用命令行adb devices检查设备是否正常连接 2.开启appium 双击运行appium应用 正常 ...

  9. 分词 | 双向匹配中文分词算法python实现

    本次实验内容是基于词典的双向匹配算法的中文分词算法的实现.使用正向和反向最大匹配算法对给定句子进行分词,对得到的结果进行比较,从而决定正确的分词方法. 算法描述正向最大匹配算法先设定扫描的窗口大小ma ...

  10. fastjson对于yyyy-MM-dd HH:mm格式的反序列化问题

    原创GrayHJX 发布于2017-03-14 22:56:33 阅读数 6851  收藏 展开 问题:最近在工作中遇到这么一个问题:有个实体类,它有个date类型的属性,当在这个属性加上fastjs ...