问题相关代码,请勿粘贴截图
for(Mod mod : mh.mods){
al("Mod " + mod.path);
mod.info = mod.GMI(basicInfo);
al("Mod " + mod.info.name);//Log输出,debug时会输出至控制台
}
运行结果及报错内容
最后程序以各种乱码输出并崩溃,但中规中矩都是0xC0000005
我的解答思路和尝试过的方法
由于这个报错是我有意而为之,我当然知道问题在哪里。那就是GMI(xx)没有返回值,导致出现了野指针(有时又是空指针)【即mod.info.name.c_str()不是一个有效的地址】,于是我便用了try&catch
try{
al("Mod " + mod.info.name + " " + mod.path + ":\nAuthor:" + mod.info.author + "\nDescription:" + mod.info.Description + "\n");
}catch(exception&){
mod.info = ModInfo();
al("Mod " + mod.path + " returns a bad value when get the info!");
}
}
报错是不报错了,但是程序并不输出异常处理的IO行,反而继续输出异常出现的地方,只不过这次输出为空:
[2022-08-29 13:22:20]:1098.828700ms:Mod C:\Users\yd\AppData\Roaming\StudyAll\UnlimitedLife\Mods\ULSimpleMod.dll:
Author:
Description:
我想要达到的结果
我想要代码执行catch中的内容