c语言异常怎么捕获有几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言异常怎么捕获有几种方式相关的知识,希望对你有一定的参考价值。
C语言没有异常这一说,请自行进行合法性的判断。1.使用标准C库提供了abort()和exit()两个函数,强行终止程序的运行,<stdlib.h>。
2.使用assert(断言)宏调用,<assert.h>。
3.使用errno全局变量,<errno.h>。
4.使用goto跳转。
5.使用setjmp,longjmp跳转。 参考技术A c语言就没异常,c++才有异常呢,这个区别很大,因为c++里面的try语句块才算是异常
c语言有assert,就是断言,一种静态异常检查。追问
自定义异常是怎么回事呀?
追答如果你单纯指c语言,是没异常的,assert不算。
如果是C++的话就是自定义一个异常的类,然后用throw抛出,这样就可以catch这个类,比如
class MyException
/* ... */;
假设我们把这个当做异常类
就可以在需要抛出异常的时候这样
throw MyException();//抛出一个无名字的类实例
在需要捕获异常的地方就可以写
try
//可能会抛出异常的代码
catch(MyException e)
//处理这个异常
throw MyException();//抛出一个无名字的类实例 //无名字?MyException不是名字吗?
try//在需要捕获异常的地方就可以写
//可能会抛出异常的代码 //如何写一个异常代码?可以在抛出与捕获写么?
catch(MyException e) //参数为什么是MyException对象e?
//处理这个异常
无名字的实例是一种概念,比如说
MyException a();
这就是定义一个MyException的实例,名字是a,那没a自然就是无名字了,理解了吗?
抛出异常是随便写的啊,比如说在一个函数中你用cin输入一个字符,假设输入的是Y就正常执行程序,输入的是N就用throw抛出一个异常告诉调用这个函数的那部分,出现问题了,要处理……然后可以定义抛出的异常是什么,然后这个“父函数”呢决定怎么去处理这个问题,都是自己定义的。
这个不一定非是e,一般写e只是因为e比较简单,而且还是exception的头字母而已,可以随便改,其他语言一般也类似。
throw 定义完异常之后, try截获 throw定义的异常 ,catch (必须传参数)?
追答catch是抓到你throw的东西,所以必须和你throw的东西类型相同,或者是你throw的东西的父类以产生多态啊。
try里面包含的是会抛出异常的代码。举个例子吧
类似这样……
int fun()
int a;
cin >> a;
if(a == 0)//我不喜欢0,所以我要告诉父函数,我出错了
throw MyException();
int main()
try
fun()
catch(MyException mye)
cout<<"出现了我不喜欢的0,我该怎么办,怎么办!?";
return 0;
计算机程序有几种语言
计算机语言的种类总的来说可以分成机器语言,汇编语言,高级语言三大类。
在没有程序语言以前,计算机科学家们写程序都是以开关电闸(即用二进制)来实现(表示)的,后来有了汇编,在后来有了C,直到今天有了C++、JAVA、VB等各种各样的编程语言。
一、C语言
C语言是Dennis Ritchie在七十年代创建的,与ALGOL保持更连续的继承性,能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言,核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。
二、C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。
三、Pascal语言
Pascal语言是由NicolasWirth在七十年代早期设计的,最早出现的结构化编程语言,具有丰富的数据类型和简洁灵活的操作语句,适于描述数值和非数值的问题。Pascal比C简单。语法类似,但它缺乏很多C有的简洁操作符。
四、VisualBasic
VB拥有图形用户界面和快速应用程序开发系统,可以使用DAO、RDO、ADO连接数据库,创建Active X控件,用于高效生成类型安全和面向对象的应用程序,整洁的编辑环境。易学、即时编译导致简单、迅速的原型,大量可用的插件。表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。
五、Java
Java于在网页上内嵌动画—它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。特点有二进制码可移植到其他平台,内含的类库非常标准且极其健壮,自动分配合垃圾回收避免程序中资源泄漏。
参考资料来源:百度百科—C语言
参考资料来源:百度百科—C++
参考资料来源:百度百科—Pascal语言
参考资料来源:百度百科—VisualBasic
参考资料来源:百度百科—Java
参考技术A 计算机语言(Computer Lnguage)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
计算机语言主要分为三类:
- 低级语言
- 高级语言
- 专用语言
1、低级语言
- 机器语言、汇编语言和符号语言。
- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
2、高级语言
- BASIC(True basic、Qbasic、Virtual Basic)、C、PASCAL、FORTRAN、智能化语言(LISP、Prolog)等等。
- 高级语言源程序可以用解释、编译两种方式执行。通常用后一种。
我们使用的C语言就是使用的后者。
3、专用语言
CAD系统中的绘图语言和DBMS的数据库查询语言。
1.1.机器语言
电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
因此程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
1.2.汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
1.3.高级语言
1.3.1.高级语言的发展
从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。
特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言——C语言。
高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
60年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是个自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称"软件危机"。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言--Pascal语言出现,标志着结构化程序设计时期的开始。
80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(Object)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C++、Virtual Basic、Delphi就是典型代表。
高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。本回答被提问者采纳 参考技术B 好几种
我知道的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA 参考技术C 算机语言的种类总的来说可以分成机器语言,汇编语言,高级语言三大类。
在没有程序语言以前,计算机科学家们写程序都是以开关电闸(即用二进制)来实现(表示)的,后来有了汇编,在后来有了C,直到今天有了C++、JAVA、VB等各种各样的编程语言。
一、C语言
C语言是Dennis Ritchie在七十年代创建的,与ALGOL保持更连续的继承性,能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言,核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。
二、C++
以上是关于c语言异常怎么捕获有几种方式的主要内容,如果未能解决你的问题,请参考以下文章