4.exception
两种异常:一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进
如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异
常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型
与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,
throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。
函数的接口
void fun() throw( A,B,C,D);这表明函数fun()可能并且只可能抛出类型(A,B,C,D)及其子类型的
异常
void fun(); 可以抛出任何类型的异常
void fun() thow(); 不能抛出任何类型的异常
try
{
包含可能抛出异常的语句;
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(...) // 三个点则表示捕获所有类型的异常
{
两种异常:一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进
行。另一种是运行时发生的错误,一般与算法有关.
异常的抛出和处理主要使用了以下三个关键字: try、 throw 、 catch如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异
常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型
与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,
throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。
函数的接口
void fun() throw( A,B,C,D);这表明函数fun()可能并且只可能抛出类型(A,B,C,D)及其子类型的
异常
void fun(); 可以抛出任何类型的异常
void fun() thow(); 不能抛出任何类型的异常
try
{
包含可能抛出异常的语句;
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(...) // 三个点则表示捕获所有类型的异常
{
}
5.
#include <stdarg.h>
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
参数说明:
-
char *str [out],把生成的格式化的字符串存放在这里.
-
size_t size [in], buffer可接受的最大字节数,防止产生 数组越界.
-
const char *format [in], 指定输出格式的字符串,它决定了你需要提供的可变参数的类型、个数和顺序。
-
va_list ap [in], va_list 变量. va:variable-argument:可变参数
函数功能:将可变参数格式化输出到一个字符数组。
用法类似于vsprintf,不过加了size的限制,防止了内存溢出(size为str所指的存储空间的大小)。
返回值:执行成功,返回写入到字符数组str中的字符个数(不包含终止符),最大不超过size;执行失败,返回负值,并置
error
使用举例:
vsnprintf(str, len, "%s %s %s", str1,str2,str3);