aria2 源码解析专题 —— (二) Exception 部分
阅读原文时间:2023年07月08日阅读:1

首先声明 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 的资源,好习惯
}