文档章节

c里面异常的处理

TreeNode
 TreeNode
发布于 2017/07/31 19:20
字数 273
阅读 2
收藏 0

c里面异常的处理

最近在改一个实现计算器的小demo的时候,进行除法运算时,除数为0的情况,之前实现除法的部分代码如下

int Divide()
{
    int a,b;
    printf("Please input two integer numbers:\n");
    scanf("%d %d", &a, &b);
    int c = a / b;
    printf("The result of div cmd is:\n");
    printf("%d/%d=%d\n", a,b,c);
    return 0;
}

发现没有对除数为0单独处理,于是查找c里面的异常解决方案,找到了一篇不错的博客,参照他的做法,我对原来的代码做了如下的改动

#include <setjmp.h>
jmp_buf buf; 

// ...

// 异常处理函数
void error_code(void)  
{  
   longjmp(buf,1);  
} 

int Divide()
{
    double a,b;
    printf("Please input two numbers:\n");
    if(setjmp(buf)==0){
	scanf("%lf %lf", &a, &b);
	if(0==b){
            error_code();
	}
	printf("The result of div cmd is:\n");
	float c = a / b;
	printf("%lf/%lf=%f\n", a,b,c);
    }
    else
	printf("error div number 0\n");

    return 0;
}

经过这样的改动,基本上可以实现了对除数是0的异常处理,代码即使遇到除数是0的问题,会友好的提示,接着运行。

© 著作权归作者所有

共有 人打赏支持
TreeNode
粉丝 0
博文 24
码字总数 12090
作品 0
海淀
从C#到Objective-C,循序渐进学习苹果开发(4)--代码块(block)和错误异常处理的理解

本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验。本文继续上一篇随笔...

walb呀
2017/12/04
0
0
day20异常的一些操作及解释

1异常 1.1异常简介 异常:就是程序运行错误或者逻辑混乱。不能让用户看到直接代码的报错,需要给客户友好的提示。 异常一般是程序中无法完全避免,一般通过一定的手段,尽量减少异常的发生。...

AAA年华
2017/11/17
0
0
字符设备驱动程序之概念介绍(一)

字符设备驱动程序之概念介绍(一) 一、 Uboot目的是启动内核。 内核目的是启动应用程序。 二、 应用程序:读写文件、点灯、获取按键 三、 1、框架: 2、简单的应用程序 int main(){ int fd...

xiaodingqq
05/06
0
0
【JavaSE(十二)】JavaIO流(上)

原文地址:https://www.cloudcrossing.xyz/post/44/ 1 异常 1.1 异常概述 异常就是Java程序在运行过程中出现的错误。 程序的异常:Throwable类是 Java 语言中所有错误或异常的超类,其子类有...

苍云横渡
05/26
0
0
Java EE项目中异常设计及处理总结

异常,为我们处理非正常的业务流程提供了很好的解决方案,如果你有过dbase、c、pascal等过程式语言开发的经历,你一定会深刻体会到,异常机制给你的代码可读行、可维护性带来的好处,同时,程...

chace0120
2014/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis常用命令

keys 我把这个命令放在第一位,是因为笔者曾经做过的项目,以及一些朋友的项目,都因为使用keys这个命令,导致出现性能毛刺。这个命令的时间复杂度是O(N),而且redis又是单线程执行,在执行k...

谢思华
25分钟前
2
0
关于css宽度分离

所谓宽度分离就是width 属性不与影响宽度的 padding/border(有时候包括 margin)属性共存 例如: .box{width:200px;padding:20px;border:1px solid;} 为何要做宽度分离 一说到分离就是为了好...

莫西摩西
36分钟前
1
0
Linux常用命令

###############常用命令说明############################## cat /proc/version 显示内核的版本 mv dir1 new_dir 重命名/移动 一个目录 rm -rf a.txt b.txt c.txt 删除多个文件 chmod 777 ......

lyle_luo
43分钟前
2
0
全国地区代码科普

全国地区代码表 天津市 地区代码 地区名称 1100 天津市 辽宁省 地区代码 地区名称 2210 沈阳市 2210 法库县 2210 康平县 2210 辽中县 2210 新民市 2220 大连市 2222 普兰店市 2223 庄河市 22...

恋码之子
43分钟前
1
0
DbForge Schema Compare for MySQL入门教程:生成比较报告

【dbForge Schema Compare for MySQL下载】 当架构比较完成后,您可以生成比较报告以保留架构更改的记录。 1. 在“Comparison” 菜单中,单击“Generate Comparison Report” 。将打开“Gen...

Miss_Hello_World
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部