gpt4 book ai didi

objective-c - objective-c 中的特定异常

转载 作者:太空狗 更新时间:2023-10-30 03:59:26 25 4
gpt4 key购买 nike

请原谅我的愚蠢问题,我希望对特定异常 NSInvalidArgumentException 使用 catch,因此,我的 OSX 项目中有下一个代码:

@try

{

...

}@catch(NSInvalidArgumentException* exception )

{

...

}

但是 xcode 告诉我:“未知类型名称‘NSInvalidArgumentException’”,所以我正在导入

import "Foundation/Foundation.h" or

import "Foundation/NSException.h"

但什么也没有发生,有人知道 NSInvalidArgumentException 在哪个包或库中吗?或者哪个是我的错误?还是绝对有必要使用父类(super class) NSException 捕获所有异常?在开发人员文档中没有显示就这样吧。

最好的问候。

最佳答案

NSInvalidArgumentException 不是异常类型。它是一个字符串,将在 name 属性中为异常返回。所以,你应该捕获你的异常,并且 name 属性不匹配,你可以重新@throw你不打算处理的异常,例如:

@try {
// code that generates exception
}
@catch (NSException *exception) {
if ([exception.name isEqualToString:NSInvalidArgumentException])
{
// handle it
}
else
{
@throw;
}
}

参见 Exception Programming Topics想要查询更多的信息。

我必须承认,我和 CodaFi 一样担心这不是对异常的适当使用。最好进行防御性编程,在调用 Cocoa 方法之前验证您的参数,并确保您一开始就不会生成异常。如果您引用 Dealing with Errors Programming with Objective-C 指南的部分,异常是针对“程序员错误”的,他们说:

You should not use a try-catch block in place of standard programming checks for Objective-C methods.

关于objective-c - objective-c 中的特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com