aria2 源码解析专题 —— (二) Exception 部分
首先声明 Exception 部分的几个异常类的继承关系,如下:

这一版的 Exception 部分只有头文件,没有源文件,所以涉及到的更多的只是定义而已,没有太多实现,所以这一部分也简单说说每个类的作用,其他的按下不表。
另外,DlRetryEx 以及 DlAbortEx 涉及到网络的重新开始以及停止异常,顾名思义。
Class Exception
作为整个模块的基类,它的结构其实也很简单,以下是它的成员列表

其中,只有 setMsg() 值得特殊说明以下,其他的没必要,而且也没给定义。
void setMsg(string msgsrc, ...)
{
va_list ap; // 定义一个字符指针
va_start(ap, msgsrc); // 将一个字符串存入此指针
char buf[256];
vsnprintf(buf, sizeof(buf), msgsrc.c_str(), ap); // 格式化写入缓冲区
msg = buf;
va_end(ap); // 清理 ap 的资源,好习惯
}

浙公网安备 33010602011771号