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语句可以抛出异常。





0 0
原创粉丝点击