Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Objective-C > 正文

Objective-C 错误处理

时间:2014-08-20 21:38 来源:未知 作者:www.51ou.com 阅读:

在Objective-C编程,错误处理提供由Foundation框架的 NSError类。

一个的NSError对象封装更加丰富和扩展的错误信息,可能比只使用一个错误代码或错误字符串。 NSError对象的核心属性是一个错误域(由一个字符串表示),域特定的错误代码和用户信息字典,包含应用程序的具体信息。

NSError

Objective-C程序使用NSError对象运行时错误,用户需要了解的信息传达。在大多数情况下,程序会显示一个对话框,这个错误信息或片状。但它也可能解释的信息,或者询问用户来尝试恢复错误或尝试纠正该错误在其自己

NSError对象包括:

  • 域名:错误域可以是一个预定义的的NSError域或任意字符串描述一个自定义域和域必须为nil。

  • 代码:错误的错误代码。

  • 用户信息:用户信息字典错误和 userInfo  可能为 nil.

下面的例子演示了如何创建一个自定义的错误

NSString *domain = @"com.MyCompany.MyApplication.ErrorDomain";
NSString *desc = NSLocalizedString(@"Unable to complete the process", @"");
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : desc };
NSError *error = [NSError errorWithDomain:domain code:-101 userInfo:userInfo];  

下面是完整的代码通过上述错误样本作为参考指针

#import <Foundation/Foundation.h>

@interface SampleClass:NSObject

-(NSString *) getEmployeeNameForID:(int) id withError:(NSError **)errorPtr;

@end

@implementation SampleClass

-(NSString *) getEmployeeNameForID:(int) id withError:(NSError **)errorPtr{
    if(id == 1)
    {
       return @"Employee Test Name";
    }
    else
    {
       NSString *domain = @"com.MyCompany.MyApplication.ErrorDomain";
       NSString *desc =@"Unable to complete the process";
       NSDictionary *userInfo = [[NSDictionary alloc] 
       initWithObjectsAndKeys:desc,
       @"NSLocalizedDescriptionKey",NULL];  
       *errorPtr = [NSError errorWithDomain:domain code:-101 
       userInfo:userInfo];
       return @"";
    }
}

@end


int main()
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   SampleClass *sampleClass = [[SampleClass alloc]init];
   NSError *error = nil;
   NSString *name1 = [sampleClass getEmployeeNameForID:1 withError:&error];
  
   if(error)
   {
      NSLog(@"Error finding Name1: %@",error);
   }
   else
   {
      NSLog(@"Name1: %@",name1);
   }

   error = nil;

   NSString *name2 = [sampleClass getEmployeeNameForID:2 withError:&error];

   if(error)
   {
      NSLog(@"Error finding Name2: %@",error);
   }
   else
   {
      NSLog(@"Name2: %@",name2);
   }

   [pool drain];
   return 0;
   
}  

在上面的例子中,我们返回一个名称,如果ID为1,否则,我们设置用户定义的错误对象。

上面的代码编译和执行时,它会产生以下结果:

2013-09-14 18:01:00.809 demo[27632] Name1: Employee Test Name
2013-09-14 18:01:00.809 demo[27632] Error finding Name2: Unable to complete the process 

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Objective-C 错误处理》技术文章,《Objective-C 错误处理》详细使用和说明,有时《Objective-C 错误处理》可能不完善、敬请谅解!如果《Objective-C 错误处理》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
推荐内容
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片