2

我已经阅读了 Cocoa 的异常编程主题简介。在Throwing Exceptions下,显示了一个异常名称FileNotFoundException

NSException *e = [NSException
    exceptionWithName:@"FileNotFoundException"
               reason:@"File Not Found on System"
             userInfo:nil];

@throw e;

但是,Predefined Exceptions页面列出了大约 10 个异常并且FileNotFoundException未列出。

在哪里可以找到常见或预期的异常和名称列表?

4

2 回答 2

2

FileNotFoundException特定示例中显示的异常不是预定义的异常。所有预定义的异常都以前缀NS开头,例如NSRangeException等。因此,您无法在预定义的异常列表下看到它。

来自苹果文档

请注意,所有预定义的异常都以前缀“NS”开头,因此在创建新的异常名称时应避免使用相同的前缀。

FileNotFoundException是自定义异常,需要开发者针对自定义错误情况提出并处理。建议所有自定义异常都应避免使用前缀NS

正如 pfrank 在他的回答中提到的,预定义的例外列表可以在这里找到

extern NSString *NSGenericException;
extern NSString *NSRangeException;
extern NSString *NSInvalidArgumentException;
extern NSString *NSInternalInconsistencyException;
extern NSString *NSMallocException;
extern NSString *NSObjectInaccessibleException;
extern NSString *NSObjectNotAvailableException;
extern NSString *NSDestinationInvalidException;
extern NSString *NSPortTimeoutException;
extern NSString *NSInvalidSendPortException;
extern NSString *NSInvalidReceivePortException;
extern NSString *NSPortSendException;
extern NSString *NSPortReceiveException;
extern NSString *NSOldStyleException;

希望有帮助!

于 2013-09-02T06:53:34.453 回答
2

这很奇怪,这些是我看到的在 NSExcpetion.h 中定义的唯一常量:

FOUNDATION_EXPORT NSString * const NSGenericException;
FOUNDATION_EXPORT NSString * const NSRangeException;
FOUNDATION_EXPORT NSString * const NSInvalidArgumentException;
FOUNDATION_EXPORT NSString * const NSInternalInconsistencyException;

FOUNDATION_EXPORT NSString * const NSMallocException;

FOUNDATION_EXPORT NSString * const NSObjectInaccessibleException;
FOUNDATION_EXPORT NSString * const NSObjectNotAvailableException;
FOUNDATION_EXPORT NSString * const NSDestinationInvalidException;

FOUNDATION_EXPORT NSString * const NSPortTimeoutException;
FOUNDATION_EXPORT NSString * const NSInvalidSendPortException;
FOUNDATION_EXPORT NSString * const NSInvalidReceivePortException;
FOUNDATION_EXPORT NSString * const NSPortSendException;
FOUNDATION_EXPORT NSString * const NSPortReceiveException;

FOUNDATION_EXPORT NSString * const NSOldStyleException;
于 2013-09-02T02:52:09.707 回答