命名空间与异常处理
2016-01-24 20:51
92 查看
1、命名空间
命名空间是一个逻辑上的类型组织系统,用来对程序中的类型进行逻辑上的分组,并使定义在同一个命名空间中的类可以利用命名空间直接相互调用。C++有命名空间机制,关键字为 namespace。库或程序中每个C++定义集被封在一个命名空间中,若其他定义中有相同的名字,则由于在不同的命名空间不会产生命名冲突。
命名空间用来限定名称的解析和使用范围解决同名冲突。
四个由大到小的作用域为:文件、类、函数、复合语句
格式:
namespace 命名空间名{
// 命名空间成员
}
2、异常处理
C++ 处理异常方法:不在发生异常的函数中处理异常,而是将异常传递到上层函数中处理,若无法处理,则继续往上传递,直到最上层函数,若仍然无法处理,则终止异常程序。
C++异常处理机制:try - throw - catch 模式进行异常处理。
基本处理方法:
a.异常的检测和处理在不同的代码段中进行,一般是在“try”部分检测异常,在 “catch”部分处理异常;
b.在上面方法是基础上增加传递异常消息的机制,在C++中通过”对象”传递异常。(对象可以是一种简单的数据,也可以是系统定义或用户自定义的类的对象)
try - throw - catch 结构要点:
a.try 语句块和catch 语句块是一个整体,两者之间不能有其他语句;
b.一个try 语句块后面可以有多个catch 语句块,反之则不可;
c.被检测函数必须在try 语句块中;
d.catch只检查所捕获异常信息类型,不检查值;
e.缺省catch 语句块为 catch(…),可以处理任何异常类型,一般置于try-catch 结构的最后;
f.try-catch结构中的throw抛出异常后,依据就近原则查找与之匹配的catch语句块;
g.throw 语句中可以不包括表达式,即
throw; // 不处理异常,请上级处理
h.若抛出异常而没有相应的catch语句块对异常进行处理,那么系统将调研函数terminate使程序终止。
命名空间是一个逻辑上的类型组织系统,用来对程序中的类型进行逻辑上的分组,并使定义在同一个命名空间中的类可以利用命名空间直接相互调用。C++有命名空间机制,关键字为 namespace。库或程序中每个C++定义集被封在一个命名空间中,若其他定义中有相同的名字,则由于在不同的命名空间不会产生命名冲突。
命名空间用来限定名称的解析和使用范围解决同名冲突。
四个由大到小的作用域为:文件、类、函数、复合语句
格式:
namespace 命名空间名{
// 命名空间成员
}
访问一个命名空间中成员的三种方法: a.直接访问命名空间成员(完全限定名) 例:std::cout<<"hello"<<std::endl; b.使用声明:用using 声明一次性引用名字 例:using std::cout; cout<<"hello"<<std::endl; c.使用指令:用using 指令将所有名字引用到命名空间中 例:using namespace std; cout<<"hello"<<endl;
2、异常处理
异常特征: a.程序在运行时可能出现的导致程序运行终止的错误,注意,程序必须要能正确运行才有机会产生异常; b.编译系统检查出来的错误,导致程序运行结果不正确的逻辑错误,不属与异常;
C++ 处理异常方法:不在发生异常的函数中处理异常,而是将异常传递到上层函数中处理,若无法处理,则继续往上传递,直到最上层函数,若仍然无法处理,则终止异常程序。
C++异常处理机制:try - throw - catch 模式进行异常处理。
基本处理方法:
a.异常的检测和处理在不同的代码段中进行,一般是在“try”部分检测异常,在 “catch”部分处理异常;
b.在上面方法是基础上增加传递异常消息的机制,在C++中通过”对象”传递异常。(对象可以是一种简单的数据,也可以是系统定义或用户自定义的类的对象)
try - throw - catch 结构要点:
a.try 语句块和catch 语句块是一个整体,两者之间不能有其他语句;
b.一个try 语句块后面可以有多个catch 语句块,反之则不可;
c.被检测函数必须在try 语句块中;
d.catch只检查所捕获异常信息类型,不检查值;
e.缺省catch 语句块为 catch(…),可以处理任何异常类型,一般置于try-catch 结构的最后;
f.try-catch结构中的throw抛出异常后,依据就近原则查找与之匹配的catch语句块;
g.throw 语句中可以不包括表达式,即
throw; // 不处理异常,请上级处理
h.若抛出异常而没有相应的catch语句块对异常进行处理,那么系统将调研函数terminate使程序终止。
、
相关文章推荐
- java虚拟机之垃圾收集器、内存分配与回收策略、GC都干了些什么
- Visualizing and Understanding Convolutional Networks论文笔记
- 数据库设计
- 1012. 数字分类 (20)
- 嵌入式交叉编译
- Java EE V7.0学习笔记-WildFly 代码案例
- 深入浅出Node.js (4) - 异步编程
- 【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)
- Leetcode 318 Maximum Product of Word Lengths 字符串处理+位运算
- 深入浅出Node.js (3) - 异步I/O
- FJ问题
- C#之数组、集合与泛型
- 83.Reverse Integer
- POJ 3020(二分图之最小路径覆盖)
- 深入浅出Node.js (2) - 模块机制
- java的同步块
- 从关系型数据库到非关系型数据库
- 上传裁剪头像(Jcrop)
- 单片机一些原理
- 实习初体验