12.c/c++程序员面试宝典-异常与错误
来源:互联网 发布:slice js 编辑:程序博客网 时间:2024/06/16 04:10
12.c/c++程序员面试宝典-异常与错误
在程序编写的过程中难免会出现各种各样的错误,有很多甚至是程序运行较长的一段时间以后才发生的。这些错误可能会导致系统不稳定甚至更加严重的一些问题,在这个时候好的异常处理就变得非常重要了。
面试题73 什么是异常*****
分析:在设计各种软件系统的过程中,处理程序中的错误和其他反常行为是困难的部分之一。例如,像通信交换机和路由器这类长期运行的交互式系统,必须将90%的程序代码用于实现错误检测和错误处理。而随着基于Web应用程序在运行时不确定性的越来越多,越来越多的程序员更加注重错误的处理。
异常就是程序运行时出现的不正常,例如,运行时耗尽了系统资源或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。
在设计良好的程序系统中,异常是程序错误处理的一部分。当程序代码检查到无法处理的问题时,异常处理就会特别有用。在这些情况下,检测出问题的那部分程序需要1种方法把控制权转到可以处理这个问题的那部分程序。错误检测程序还必须指出具体出现了什么问题,并且可能需要提供一些附加信息。
好的异常处理可以保持程序长久、稳定地运行,而如果没有做好程序的异常处理,程序就很可能在发生异常的时候,出现无法继续运行等严重的情况。程序员随着经验的增长。往往会在异常处理方面做得更加成熟,在编写程序代码的同时也建立起了良好的防御性代码,来处理程序可能的各种异常,以保护程序在发生异常的时候可以继续运行。
在面试的时候,可能不会直接考查异常处理,但是在考查程序编写的时候,建立好的防御性代码来处理异常是非常体现程序员的功力的。
【答案】异常就是程序运行时出现的不正常,它可能会导致系统无法正常运行甚至停止运行等严重的情况,编程者需要实现好的异常处理来保证程序的稳定性。
面试题74 如何抛出和捕捉异常****
分析:在c++中,异常机制可以提供程序中错误检测与错误处理部分之间的通信。使用异常处理,程序中独立开发的各部分能够就程序执行期间出现的问题相互通信,并处理这些问题。程序的一个部分能够检测出本部分无法解决的问题,这个问题检测部分可以将问题传递给准备处理的其他部分。异常处理的方法包括以下两个部分:
(1)throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误。可以说,throw引发了异常条件。
(2)try块,错误处理部分使用它来处理异常。try语句块以try关键字开始,并以一个或多个catch子句结束。在try块中执行的代码所抛出(throw)的异常,通常会被其中一个catch子句处理。因此,catch子句也称为处理代码。
由标准库定义的一组异常类,用来在throw和相应的catch之间传递有关的错误信息。
在c++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,判断到底出了什么错误,系统通过throw表达式抛出异常。throw表达式由关键字throw以及尾随的表达式组成,通常以分号结束,这样它就成为了表达式语句。throw表达式的类型决定了所抛出异常的类型。系统通过catch语句捕捉异常并处理,使用异常捕获的语法如下:
try //功能代码
{
program-statements
}
catch (exception-specifier) //捕获异常
{
handler-statements //处理语句
}
catch (exception-specifier) //捕获异常
{
Throw //抛出异常
}
其中,try语句将会执行需要运行的程序表达式,并且捕获发生的异常。catch语句可以捕捉到运行时发生的各种异常,exception-specifier可以定义异常的种类,并且在catch后运行处理代码。而throw可以将异常抛出,并且由定义好的catch来捕获并且进行异常处理。
【答案】在c++中,系统通过try块和异常处理构成了异常机制;其中通过catch语句来捕捉运行时的异常,并且执行异常处理,通过throw语句可以抛出异常。
- 12.c/c++程序员面试宝典-异常与错误
- JAVA程序员面试宝典C
- 11.c/c++程序员面试宝典-文件输入与输出
- 20.c/c++程序员面试宝典-引用与值传递
- JAVA程序员面试宝典C收藏
- C/C++程序员面试宝典-1
- C/C++程序员面试宝典-2
- 3.c/c++程序员面试宝典-变量
- 4.c/c++程序员面试宝典-引用
- 9.c/c++程序员面试宝典-递归
- 22.c/c++程序员面试宝典-类
- 24.c/c++程序员面试宝典-多态
- 25.c/c++程序员面试宝典-继承
- 34.c/c++程序员面试宝典-模板
- 35.c/c++程序员面试宝典-容器
- 36.c/c++程序员面试宝典-表
- C/C++程序员面试宝典备忘录
- 《程序员面试笔试宝典》C知识归纳
- 京东11.11:数据库运营实践——智能化、自动化、平台化
- 63.Oracle数据库SQL开发之 高级查询——使用报表函数
- svm的一些理解(网上收集)
- C语言经典算法大全
- 64.Oracle数据库SQL开发之 高级查询——使用LAG和LEAD函数
- 12.c/c++程序员面试宝典-异常与错误
- 65.Oracle数据库SQL开发之 高级查询——使用FIRST和LAST函数
- 网络连接工具类
- 66.Oracle数据库SQL开发之 高级查询——使用线性回归函数
- Struts2持续学习中(struts. xml配置)
- Install Google Chrome on Fedora 23/22, CentOS/RHEL 7.1
- 67.Oracle数据库SQL开发之 高级查询——使用假想评级与分布函数
- 一个Pyqt编写的小窗口
- B树(平衡多路查找树)B-tree树