Exceptions & Errors - 异常与错误 - 简书
下载简书移动应用
写了29417字,被11人关注,获得了7个喜欢
Exceptions & Errors - 异常与错误
来源于 Ry’s Objective-C Tutorial - RyPress
一个学习Objective-C基础知识的网站.
个人觉得很棒,所以决定抽时间把章节翻译一下.
本人的英语水平有限,有让大家误解或者迷惑的地方还请指正.
仅供学习,如有转摘,请注明出处.
iOS或者OS X程序运行中,会产生两种不同类型的问题.其中,异常代表着编程人员级别的bugs,比如尝试访问不存在的数组元素.它们被设计的目的就是告知开发人员 - 有意外的情况发生.异常一般很少在你写代码时发生,却通常导致程序崩溃.相对于异常,错误则是用户级别的问题,比如尝试加载一个不存在的文件.因为错误是正常程序执行时预期的,所以在这类错误发生时,你应该手动核查这类情况并告知用户.大部分情况下,错误不会引起程序崩溃.
Exceptions vs. errors
该部分将对异常和错误进行深入的介绍.从概念上来说,处理异常与处理错误很相似.首先,你得检测到问题,然后再处理它.随后我们会看到它们之间的不同.
异常对应的类是.它被设计成(用)一个通用的方式来封装了异常数据,所以你基本上不用子类化它或者定义一个自定义的异常对象.下面列出了NSException的三个主要属性.
NSString类型,唯一标识该异常
NSString类型,可读的异常信息描述
NSDictionary类型,其中的键值对包含有关异常的额外信息,取决于异常类型
异常仅用于严重的程序错误,理解这点很重要.这个是让你知道,一些问题在开发周期中产生,在你去解决这个问题之后,是不会再发生了.而如果处理一个可预测的问题,那你应该用,而不是异常.
在大多数的高级编程语言中,都能通过使用常规的try-catch-finally方式来处理异常.首先,将可能产生异常的代码放在@try块中,随后,如果抛出异常,对应的@catch()块便会执行以便处理发生的问题.@finally块在最后执行,无论是否产生异常,@finally块都会执行.
下面的main.m文件通过访问一个数组不存在元素来触发一个异常.在@catch()块中,我们仅简单的显示了异常详细内容.括号里的NSException对象*theException是包含异常对象的变量名称.
#import &Foundation/Foundation.h&
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *inventory = @[@"Honda Civic",
@"Nissan Versa",
@"Ford F-150"];
int selectedIndex = 3;
NSString *car = inventory[selectedIndex];
NSLog(@"The selected car is: %@", car);
} @catch(NSException *theException) {
NSLog(@"An exception occurred: %@", theException.name);
NSLog(@"Here are some details: %@", theException.reason);
} @finally {
NSLog(@"Executing finally block");
在实际情况下,你会想在@catch()块中,通过打印问题并修正它来处理异常,或者构造一个错误对象并展示给用户.(对于)处理未捕获的异常,默认的行为是在控制台输出(相关)信息并退出程序.
OC的异常处理能力并不是最高效的,所以你应该仅在真正特殊(例外)的情况下使用@try/@catch()块.不要用它来代替普通的的控制流.相反的,使用标准的if语句来核查可预测的情况.
这意味着上述的代码对异常的使用很不恰当.一个更好的方式是应该使用惯用的比较方式来确认selectedIndex得比[inventory count]小.
if (selectedIndex & [inventory count]) {
NSString *car = inventory[selectedIndex];
NSLog(@"The selected car is: %@", car);
// Handle the error
内置的异常(对象)
标准的iOS和OS X框架中定义了几种内置的异常.完整的(异常)列表可在查看,但最常用的一些如下所示:
NSRangeException
访问集合外界元素时产生
NSInvalidArgumentException
给方法传递非法参数时产生
NSInternalInconsistencyException
内部发生意外情况产生
NSGenericException
当你不知道是什么触发异常时产生
请注意,这些值都是strings,不是NSException的子类.所以,当你想查看异常的特定类型时,你需要像下面这样查看(异常的)name属性才行:
} @catch(NSException *theException) {
if (theException.name == NSRangeException) {
NSLog(@"Caught an NSRangeException");
NSLog(@"Ignored a %@ exception", theException);
在@catch块中,@throw指令重新产生一个已捕获的异常.在上述代码中,我们使用@throw来将异常抛到更高层的@try块中,以便我们忽略我们不想处理的异常.一个简单的if语句还是很有必要的.
自定义异常
可以使用@throw来抛出包含自定义数据的异常对象.最容易的方式就是通过 exceptionWithName:reason:userinfo 工厂方法创建一个异常实例.下面的例子是在top-level函数中抛出异常并在mian()函数中捕获:
#import &Foundation/Foundation.h&
NSString *getRandomCarFromInventory(NSArray *inventory) {
int maximum = (int)[inventory count];
if (maximum == 0) {
NSException *e = [NSException
exceptionWithName:@"EmptyInventoryException"
reason:@"*** The inventory has no cars!"
userInfo:nil];
int randomIndex = arc4random_uniform(maximum);
return inventory[randomIndex];
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *car = getRandomCarFromInventory(@[]);
NSLog(@"The selected car is: %@", car);
} @catch(NSException *theException) {
if (theException.name == @"EmptyInventoryException") {
NSLog(@"Caught an EmptyInventoryException");
NSLog(@"Ignored a %@ exception", theException);
除非必要,否则你不应该在常规程序中这样去抛出自定义异常.其中一个原因就是,异常代表了编程人员的错误,而且应该在当你为严重的编码错误做打算时,才考虑使用它.其二,@throw是一个昂贵的操作,尽可能的使用errors更好.
错误代表着可预料的问题,并且有很多类型的操作可以在不引起程序崩溃的的情况下失败,它们比异常更常见.与异常不同,这种错误核查是高质量代码的常规项.类封装了失败操作的详细内容.它的主要属性与NSException类似.
NSString类型,包含了错误的domain.被用来将错误组织成层级结构并且保证错误码不会冲突
NSInteger类型,标识了error的ID.在相同domain中的每个error都有一个唯一的值
NSDictionary类型,其中的key-value对包含了错误的额外信息, (键值对内容)取决与错误类型
NSError对象的userInfo字典比NSException的字典版本提供了更多内容.一些预定义的键被定义为常量,如下表:
NSLocalizedDescriptionKey
NSString类型,代表着错误的全部描述.通常也包含了失败原因
NSLocalizedFailureReasonErrorKey
NSString类型,简洁的错误原因描述
NSUnderlyingErrorKey
对代表着下一高层次的domain中的错误的另一个NSError引用
根据错误(情况), 这个字典也包含其他特殊的domain信息.比如, 文件加载错误对应的key是NSFilePathErrorKey,它(对应的value)包含了所请求文件的路径.
注意,localizedDescription和localizedFailureReason方法是分别访问头两个key的可选方式.下面的章节使用了它们.
错误不需要任何像@try,@catch这样的专用的语言指令.相反地,函数或者方法失败之后会接受到一个额外的参数(通常被称作Error),(这个error)指向了NSError对象.如果一个操作失败了,一般会返回NO或者nil来标明错误并且把这个(额外的)参数填充到错误详情中.如果成功,则简单返回正常的请求值.
很多方法都被配置成能接受一个间接的NSError对象引用.一个间接的引用是一个指针的指针,它允许方法的这个参数指向一个全新的NSError实例.你可以通过两个指针记号[(NSError **)error]来决定一个方法的error参数是否接受一个间接的引用.
随后的代码段,通过NSString类的stringWithContentsOfFile:encoding:error:方法来尝试加载不存在文件以证明这种错误处理模式.当文件加载成功,这个方法以NSString类型返回文件的内容,但当加载失败,便会直接返回nil,同时返回已填充新的NSError对象的error参数.
#import &Foundation/Foundation.h&
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *fileToLoad = @"/path/to/non-existent-file.txt";
NSString *content = [NSString stringWithContentsOfFile:fileToLoad
encoding:NSUTF8StringEncoding
error:&error];
if (content == nil) {
// Method failed
NSLog(@"Error loading file %@!", fileToLoad);
NSLog(@"Domain: %@", error.domain);
NSLog(@"Error Code: %ld", error.code);
NSLog(@"Description: %@", [error localizedDescription]);
NSLog(@"Reason: %@", [error localizedFailureReason]);
// Method succeeded
NSLog(@"Content loaded!");
NSLog(@"%@", content);
注意我们是怎样被迫通过引用操作来将error变量传递给这个方法的.因为error参数接收一个指针引用(双指针).也注意我们是怎样使用普通的if语句来核查方法成功情况下的返回值.你应该只在方法直接返回nil的时候再去访问NSError引用,而且,你永远都不应该使用NSError对象的存在来判断(方法调用的)成功或失败.
当然,如果你仅关注的操作的成功而不考虑为何失败,那你只要给error参数传递一个NULL,它就会被忽略了.
与NSException类似,NSError也被设计成一个用来表示错误的通用对象.与子类化它相反,各种iOS与OS X框架都为domain和code fields定义了它们自己的常量.有很多内置的错误domain,主要的四个如下:
NSMachErrorDomain
NSPOSIXErrorDomain
NSOSStatusErrorDomain
NSCocoaErrorDomain
大部分你遇到的错误都在NSCocoaErrorDomain中,但如果你继续往低层次的domain中探究,你会看到其他一些.比如,如果你把下面一行加入到main.m中,你将会发现一个NSPOSIXErrorDomain的错误.
NSLog(@"Underlying Error: %@", error.userInfo[NSUnderlyingErrorKey]);
对于大多数应用来说,你不必这么做,但是当你需要知道引起错误的根源时,它就能派上用场了.
在你确定了错误domain后,你可以核查一下具体的错误码.描述了一些枚举,其中的大部分错误码都在NSCocoaErrorDomain中定义了.比如下面的代码,用来判断错误是否是NSFileReadNoSuchFileError.
if (content == nil) {
if ([error.domain isEqualToString:@"NSCocoaErrorDomain"] &&
error.code == NSFileReadNoSuchFileError) {
NSLog(@"That file doesn't exist!");
NSLog(@"Path: %@", [[error userInfo] objectForKey:NSFilePathErrorKey]);
NSLog(@"Some other kind of read occurred");
其他框架应该在他们的文档中包含任何自定义的domain和错误码.
自定义错误
如果你正在参与一个大的项目,你很可能会有一些函数或者方法导致错误.这部分章节将说明如何使用上述的典型的错误处理模式来配置它们.
作为最佳实践,你应该在专门的头文件中定义你的错误.举例来说,InventoryErrors.***件可以定义一个domain,包含了与inventory中项目相关的各类的不同错误码.
// InventoryErrors.h
NSString *InventoryErrorDomain = @"com.RyPress.Inventory.ErrorDomain";
InventoryNotLoadedError,
InventoryEmptyError,
InventoryInternalError
从技术上来说,自定义错误domain可以定义成任何你想的,但推荐的形式是com.&Company&.&Framework-or-project&.ErrorDomain,正如在InventoryErrorDomina.h中所示的.(并利用)枚举定义了错误码常量.
关于函数和方法的区别就在于是否支持额外的error参数.它是特定的NSError **类型,如下所示的getRandomCarFromInventory().当发生一个错误,你会将这个参数指向一个新的NSError对象.需要注意我们是怎样手动将NSLocalizedDescriptionKey添加到userInfo字典中来定义localizedDescription的.
#import &Foundation/Foundation.h&
#import "InventoryErrors.h"
NSString *getRandomCarFromInventory(NSArray *inventory, NSError **error) {
int maximum = (int)[inventory count];
if (maximum == 0) {
if (error != NULL) {
NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"Could not"
" select a car because there are no cars in the inventory."};
*error = [NSError errorWithDomain:InventoryErrorDomain
code:InventoryEmptyError
userInfo:userInfo];
int randomIndex = arc4random_uniform(maximum);
return inventory[randomIndex];
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *inventory = @[];
NSString *car = getRandomCarFromInventory(inventory, &error);
if (car == nil) {
NSLog(@"Car could not be selected");
NSLog(@"Domain: %@", error.domain);
NSLog(@"Error Code: %ld", error.code);
NSLog(@"Description: %@", [error localizedDescription]);
// Succeeded
NSLog(@"Car selected!");
NSLog(@"%@", car);
因为从技术上它是一个错误,而不是异常,这个getRandomCarFromInventory()版本是一个更"适当"的方式来处理它.(与对应).
错误代表着iOS或者OS X应用的失败操作.它是一个标准的方式,用来记录检测点的相关信息并且将它传给处理代码.异常(与错误)也比较类似,但被设计成更多用于开发辅助.它们通常都不应该用于 production-ready[已成品的] 程序中.
怎么处理错误或者异常很大程度上都得根据问题类型以及你的应用程序才能决定.但是,大多数情况都会使用像
(OS X)(控件)这种来告知用户信息.之后,你很可能想通过检查NSError或者NSExcepiton对象来发掘问题所在,从而尝试修复它.
下个章节探讨一下关于OC运行时的比较偏概念的东西.我们将学习有关对象背后的内存是怎样通过手动retain,release进行管理的(目前已过时),以及目前新的ARC实际含义.
写于15年09月29号, 完成于15年10月20号这一片感觉翻译的很烂, 请留情...不甚感激
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:查看: 1867|回复: 5|关注: 0
出现选择文件的对话框后不选择文件,关闭对话框后出现...
关注者: 5
if isempty(file)
关注者: 5
juanzio 发表于
我这样改了还是那样呢??
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject& & h ...
这个可能跟你的excel版本有关系
关注者: 5
juanzio 发表于
07版的excel,但是如果选择了文件后能够正常读取、显示的
等待高手来解答吧
站长推荐 /1
活动地点已更新
Powered byruntime error怎么解决?runtime error是什么?runtime错误解决方案!
大家在用电脑的时候都会出现这种情况!弹出一个runtime error对话框!然后桌面就没了!玩游戏也是一样,出现一个就悲剧了,那怎么办?小编告诉大家几种方法首先要解决他就必须了解他,那什么是runtime error错误呢?通俗点说run time error是一个计算机错误以信息栏的状态显示包含特定的错误代码以及相应的解释.一般来说发生前用户会感到电脑明显的缓慢. 当信息栏被关闭后程序一般会自动关闭或者失去响应,有时会导致电脑重启有多种情况会导致这些问题,包括:tsr程序(终止并驻留程序)之间的冲突、其他正在运行的程序(常见于扩展程序以及软件的其他附加程序例如google工具拦)、软件问题、内存问题、危险程序例如病毒解决步骤:1,终止问题进程。2,***更新补丁升级到最新版本或者重新***应用软件。3,一些软件发生冲突,例如360等杀毒软件的误报,游戏是***游戏时候,可以先关闭安全软件。4,扫描病毒。5,重新***操作系统。6,联系硬件厂商(中国用户可以忽略你懂的)。游戏出现的话解决方法有四个:游戏版这个不是游戏本身的问题,是的问题,是vista和win7的Msvcrt.dll 和 Msvcirt.dll 两个文件,如果是7.0的版本,将无法兼容游戏下图是运行库的问题下图可以用这方法&出现runtimeerror,一般问题都出在注册表,“运行—〉regedit”打开注册表,笨一点的方法就是按F3出入“runtime”,查找所有名为runtime的数值,然后一个一个删掉,但这样实在太多了,不停的删半个小时不一定能删完(我曾经被runtimeerror这个问题困扰了很久,这个笨办法用过,20分钟没删完),聪明一点的办法就是,缩小范围!一般错误会在哪呢?按我的经验,一般都在这里!HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\Windows\CurrentVersion\Run,在这里面搜runtime项,删掉,最多一分钟搞定!出现问题原因:出现runtimeerror的原因有很多,我至今还不清楚,我估计是一些垃圾软件、流氓软件强制***到计算机里的缘故!造成的后果往往是这样的:电脑各个盘符右键单击,菜单最上面是&auto&而不是“打开”,还有就是QQ等软件出现错误,要求重启,这个时候你重装QQ也是没有用的,注册表出错必须先清理注册表。防范办法:建议大家***一些反流氓软件,比如:金山毒霸、卡巴斯基、卫士360等等,从我使用的情况来看,卫士360值得推荐!一旦有程序写入注册表,他马上提示,并显示***路径,这样再出现runtimeerror,你可以根据这个路径,去注册表找那些runtimeerror项,有的放矢了!大众版1,把系统升级到SP2(或者打net2.0 sp2补丁)2,装个xp系统3,从别的电脑或者找DLL下载早期版本的这两个文件覆盖掉(这个方法有风险,须谨慎)4,win7用户可以去微软官网进行在线hotfix(这个没试过,不知道可不可以,征求小白鼠)第二个方法一劳永逸,第三个方法必然成功但是有风险,sp2是我采取的,目前没问题。专业版下面代码太多可以用Ctrl+F查找对话框上显示的内容!常见错误以及错误代码5 Illegal function call Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 确认程序以升至最新版本,如未解决重新***,如果仍然存在应联系软件开发商.6 Overflow Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同57 Out of memory ,This issue can be caused when the computer does not meet the programs system requirements or to much memory is already being used for the program to run. 可能由系统配置不达标引起,无法提供足够的内存.If your computer meets the requirements try first reinstalling the program to make sure it's not an issues with the program installation..如果系统配置合格那么重新***软件确保不是软件自身的问题9 Subscript out of range Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同510 Duplicate definition Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同511 Division by zero Problem with a math formula in the program or the programs code. Verify no software updates are available for the program causing this error. 13 Type Mismatch Make sure your system regional settings are setup correctly and that the program you're running is made for your version of Windows. 确保你的系统区域设置正确并且软件是为你的系统所设置的14 Out of string space Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同519 No Resume Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同520 Resume without error Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同528 Out of stack space This issue can be caused by a program or memory error. First try going through the out of memory troubleshooting , if this does not resolve the issue try reinstalling / updating the program. 同7,必要时升级/重装软件35 Sub or Function not defined Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同548 Error in loading DLL This issue is often caused with a bad installation or an issue caused after another program has been installed that replaced the programs DLL. Close all programs and TSRs and try installing the program again. 多由错误的***或者第三方程序修改/覆盖原dll程序引起.关闭程序以及相关进程然后重新***软件52 Bad file name or number Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同553 File not found File required by the program to run is not found. Program needs to be reinstalled or missing file(s) need to be copied back to the computer. 软件需要重新***或者有文件缺失.54 Bad file mode Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同555 File already open Program or file associated with program is being used and program does not have access to use it. Try closing all open programs and run program again. 尝试关闭所有程序以及相关进程然后重新运行程序.58 File already exists Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同561 Disk full The disk, for example, the hard disk drive does not have enough space for the program to run or for associated files to be copied to. Free up disk space on the computer hard drive. 例如没有足够的硬盘空间运行程序或者存储相关文件,尝试清理硬盘.62 Input past end of file Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同563 Bad record number Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同564 Bad file name Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同568 Device unavailable A hardware device or necessary requirement for the program is not being found. Verify all hardware and software required by the program is installed. If you continue to have the same issues verify the latest updates are installed for the program as well as any hardware device the program needs. 确保所有硬件软件配置符合软件运行的最低要求,如果无法解决那么确保升级到最新版本并且检查驱动程序.70 Permission denied The location of where the program is being copied to does not have proper rights. Or a file that is trying to be copied over because it's currently being used. Try closing all programs and TSRs and running/installing the program again. 关闭所有程序以及相关进程然后再次运行/***程序71 Disk not ready Verify you have proper rights to the location you are attempting to install the program to. 确保你有足够的权限74 Can't rename with different drive Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同575 Path/File access error, Program does not have rights or access to a file. Often this is caused when a program is trying to access a network file it doesn't have proper access to either because of network privileges or something is blocking the program. This issue can also be caused when the file is being used by another program or is read-only. 多发生于程序试图连接网络但是由于网络权限或者其他因素阻止其访问时. 也可能由于网络文件同时被其他程序占用或者是只读的.76 Path not found Directory of where the program needs to be copied to or files associated with the program need to be copied to is missing. Try reinstalling the program. 重新***程序91 Object variable set to Nothing Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同593 Invalid pattern Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 如果已经升级到最新版本那么重新***该程序.如果仍未解决那么应联系软件开发商94 Illegal use of NULL Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5102 Command failed Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5339 A file is missing or invalid An associated program file is missing or corrupt. Try reinstalling the program. 重新***该程序429 Object creation failed Program is corrupted, try reinstalling the program generating the runtime error. 重新***问题程序438 No such property or method Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5439 Argument type mismatch Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5440 Object error Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5901 Input buffer would be larger than 64K Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5902 Operating system error Verify the program is compatible with your version of Windows and/or has any software updates. 确保该程序兼容你的操作系统或者已经升级到最新版.903 External procedure not found Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5904 Global variable type mismatch Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同5905 User-defined type mismatch A setting either in the program shortcut or being defined by the user is correct. Try running just the program without any additional settings or variables. 尝试启动原程序而不进行任何改动.906 External procedure interface mismatch Program error, verify the program has all the latest updates. If updated try reinstalling the program. If you continue to have the same errors contact the software developer. 同51001 Out of memory This issue can be caused when the computer does not meet the programs system requirements or to much memory is already being used for the program to run. 系统不符合该程序的最低系统要求或者过多内存被其他软件所占用.If your computer meets the requirements try first reinstalling the program to make sure it's not an issue with the program installation. 如果系统配置足够那么尝试重新***程序以确保不是软件自身问题.1025 DLL is not supported This issue is often caused with a bad installation or an issue caused after another program has been installed that replaced the programs DLL. Close all programs and TSRs and try installing the program again. 同48 OK希望对大家有帮助,还不行的话请留言给我们!
阅读本文后您有什么感想? 已有
人给出评价!
12-05-2504-11-0704-10-0704-10-0704-10-0704-10-0704-10-0704-10-07
注:您的评论需要经过审核才会显示出来
没有查询到任何记录。
Copyright &
PC6下载().All Rights Reserved
备案编号:湘ICP备号