C++是一种非常灵活的语言,不过不是特别安全,为了增加C++的安全性,引入的语言特性之一就是异常。
异常的定义:
所谓异常就是一种意料之外的情况。例如,如果你编写了一个函数,需要访问一个Web,那么在很多情况下都可能出错,该页面所在的Internet主机可能关机,
页面可能返回空白页面,另外连接有可能中断,,在许多程序设计语言中,对于这种情况的处理是从函数返回一个特殊的值,如NULL指针。异常则处理这些问
题提供了另一种机制,相比之下这种异常机制要好的多。
异常简单用法:
#include <stdexcept>
double divideNumbers(double inNumberator ,double inDenominator){\
if (inDenominator == 0){
throw std::exception() ;
}
return (inNumberator / inDenominator) ;
}
执行到throw代码行时,函数就会立即结束,不会返回值,如果调用者用一个try - catch 块把这个函数调用包起来(如下代码所示),调用者就会接受到这个异常,
并且能够加以处理。
#include <iostream>
#include <stdexcept>
int main(int argc,char **argv){
try{
std::cout << divideNumbers (2.5,0.5) << std::endl ;
std::cout << divideNumbers (2.3,0) << std::endl ;
} catch (std::exception exception) {
std::cout << "An expection was Caugth !" << std::endl ;
}
}
第一个divideNumber()调用会成功滴执行,结果将输出给用户,第二个调用则会抛出一个异常,此时不返回任何值,唯一输出的就是
要捕获到异常所要打印的错误信息,输出结果如下:
5
An expection was Caugth !
异常的定义:
所谓异常就是一种意料之外的情况。例如,如果你编写了一个函数,需要访问一个Web,那么在很多情况下都可能出错,该页面所在的Internet主机可能关机,
页面可能返回空白页面,另外连接有可能中断,,在许多程序设计语言中,对于这种情况的处理是从函数返回一个特殊的值,如NULL指针。异常则处理这些问
题提供了另一种机制,相比之下这种异常机制要好的多。
异常简单用法:
#include <stdexcept>
double divideNumbers(double inNumberator ,double inDenominator){\
if (inDenominator == 0){
throw std::exception() ;
}
return (inNumberator / inDenominator) ;
}
执行到throw代码行时,函数就会立即结束,不会返回值,如果调用者用一个try - catch 块把这个函数调用包起来(如下代码所示),调用者就会接受到这个异常,
并且能够加以处理。
#include <iostream>
#include <stdexcept>
int main(int argc,char **argv){
try{
std::cout << divideNumbers (2.5,0.5) << std::endl ;
std::cout << divideNumbers (2.3,0) << std::endl ;
} catch (std::exception exception) {
std::cout << "An expection was Caugth !" << std::endl ;
}
}
第一个divideNumber()调用会成功滴执行,结果将输出给用户,第二个调用则会抛出一个异常,此时不返回任何值,唯一输出的就是
要捕获到异常所要打印的错误信息,输出结果如下:
5
An expection was Caugth !