ObjC:错误处理......返回什么

Oli*_*ver 5 error-handling objective-c

为这样一个新手问题道歉.

我编写了一个类方法,它接受三个字符串并返回一个子字符串.

我编写了条件语句,只有在满足某些条件时才允许返回子字符串.但是,如果无法提取子字符串,我不确定需要返回什么.目前我有方法返回默认的'错误'字符串,但我觉得这可能不是最好的做法.

这是我的方法:

+(NSString *)ExtractSubstringFrom:(NSString *)sourceString 
             Between:(NSString *)firstString And:(NSString *)secondString {


             NSRange stringRangeOne = [sourceString rangeOfString:secondString];
             NSString *resultString;

             if (stringRangeOne.location != NSNotFound) {
             resultString = [sourceString substringToIndex:stringRangeOne.location]; 
             }

             NSRange stringRangeTwo = [sourceString rangeOfString:firstString];

             if (stringRangeTwo.location !=NSNotFound) {
             resultString = [resultString substringFromIndex:stringRangeTwo.location+stringRangeTwo.length];
             return resultString; 
             }

             else return @"Error!";

             //To do... improve error checking

             }
Run Code Online (Sandbox Code Playgroud)

如何使此方法更加错误友好?

das*_*ght 6

在Objective C中有几种处理此类错误的方法:

  • 返回默认值 - 通常是默认值nil.由于nil在Objective C中允许对对象执行操作,因此这是相对安全的.
  • 生成NSError对象 - 这是最终用户可以解决的更典型的错误,例如连接和配置问题.这种API的不幸副作用是需要设置并传递额外的参数.
  • 使用断言 - 这是处理"编程错误"的好方法,即当程序的参数超出其指定范围时.
  • 抛出异常 - 此选项以语言提供,但Apple强烈反对使用它.我在这里提到它是完整的,尽管我自己从不使用这个选项.