MegaDownloader Revival v1.9.1
Bug 修复版本
v1.9.0 发布后用户反馈测试时下载文件夹出现 NullReferenceException 崩溃,本版本修复该问题。
下载
| 文件 | 说明 |
|---|---|
MegaDownloader-Revival-v1.9.1-win-x86.zip
| 完整包,包含主程序 + 8 个依赖 DLL,解压即用(推荐) |
MegaDownloader.exe
| 仅主程序(需自行准备依赖 DLL,推荐下载完整包) |
修复
修复下载器 NullReferenceException 崩溃
问题现象:当 MEGA 服务器返回 502 错误网关等异常时(常见于网络不稳定或频繁请求),MegaDownloader 弹出错误窗口显示 System.NullReferenceException: 未将对象引用设置到对象的实例,且整个后台下载线程崩溃,后续文件无法继续下载。
错误位置:Clases/FileDownloader.vb downloadFile() 方法第 681-683 行。
根本原因:
Catch ex As Exception ' ← catch 声明的是 ex
Log.WriteError("... " & file.Name & " - " & exc.ToString) ' ← 但代码误用了 exc
bgwDownloader.ReportProgress(InvokeType.FileDownloadFailedRaiser, exc) ' ← 同样的错误
End Tryexc 是方法开头声明的局部变量(用于跨 try-catch 累积异常),在前一个 try 块中已被 exc = Nothing 清空。因此当此 catch 块被触发时:
ex保存了真正的异常(如 WebException 502)exc此时为Nothingexc.ToString抛出 NullReferenceException,掩盖了真实的网关错误- 二级异常沿调用栈冒泡到
bgwDownloader_DoWork,中断整个下载流程
修复:将 exc 改为 ex,使 catch 块正确引用当前异常对象。
验证方法
- 下载并解压
MegaDownloader-Revival-v1.9.1-win-x86.zip - 添加 MEGA 文件夹链接,例如:
https://mega.nz/folder/qlkmBSZD#zVgbSBOPRoO291hScORB2Q - 启动下载
- 修复前:502 错误时弹窗
NullReferenceException,后续文件不下载 - 修复后:502 错误时正确标记该文件为下载失败,后续文件继续下载,日志中能看到真实的
WebException: 远程服务器返回错误: (502) 错误的网关记录
升级建议
所有 v1.9.0 用户建议升级到 v1.9.1。
完整变更日志
参见 CHANGELOG.md。
Full Changelog: v1.9.0...v1.9.1