ときには起こせよエクセプション

10,340
-1

Published on

Published in: Technology, Spiritual
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,340
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
5
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

ときには起こせよエクセプション

  1. 1. ∼時には起こせよ エクセプション
  2. 2. 永野哲久 7gano iPhone Core Audioプログラミングという絶賛 絶版中でAmazonで1万円超のプレミアムがつ いている本を書きました" COOKPADではCore Audioのコードは1行も書 いていません
 現在、ROLLCAKE inc. に出向、取り締まり中
 Core Audioのコードは1行も書いていません
  3. 3. id object; ... NSMutableDictionary *dict; dict = [NSMutableDictionary new]; dict[@"key"] = object;
  4. 4. あ∼ このコード、たまに
 objectがnilの場合があるなぁ
  5. 5. Exception[33092:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: key)' *** First throw call stack:
  6. 6. すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです! すぐ落ちます!★1つです!
  7. 7. クイズで覚えるエクセプション
  8. 8. @try { NSMutableArray* mutableArray; mutableArray = [NSMutableArray new]; [mutableArray addObject:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception = %@", exception); }
  9. 9. 例外発生 *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
  10. 10. @try { NSMutableArray* mutableArray; mutableArray = [NSMutableArray new]; [mutableArray addObject:[NSObject new]]; id obj = [mutableArray objectAtIndex:1]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  11. 11. 例外発生 -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]
  12. 12. @try { NSMutableArray* mutableArray; mutableArray = [NSMutableArray new]; NSUInteger index; index = [mutableArray indexOfObject:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  13. 13.
  14. 14. @try { NSMutableArray* mutableArray; mutableArray = [NSMutableArray new]; [mutableArray removeObject:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  15. 15.
  16. 16. @try { NSMutableDictionary* dictionary; dictionary = [NSMutableDictionary new]; [dictionary setObject:nil forKey:@"key"]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  17. 17. 例外発生 *** setObjectForKey: object cannot be nil (key: key)
  18. 18. @try { NSMutableDictionary* dictionary; dictionary = [NSMutableDictionary new]; [dictionary setObject:@"object" forKey:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  19. 19. 例外発生 *** setObjectForKey: key cannot be nil
  20. 20. @try { NSMutableDictionary* dictionary; dictionary = [NSMutableDictionary new]; id obj = [dictionary objectForKey:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  21. 21.
  22. 22. @try { NSMutableDictionary* mutableDictionary; mutableDictionary = [NSMutableDictionary new]; [mutableDictionary removeObjectForKey:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  23. 23. 例外発生 *** -[__NSDictionaryM removeObjectForKey:]: key cannot be nil
  24. 24. @try { [@(1) isEqualToNumber:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  25. 25. 例外発生 -[__NSCFNumber compare:]: nil argument
  26. 26. え、compare: ?
  27. 27. @try { [@"A" isEqualToString:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  28. 28.
  29. 29. え、なんでこっちは OK系 ?
  30. 30. @try { [NSString stringWithString:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  31. 31. 例外発生 *** -[NSPlaceholderString initWithString:]: nil argument
  32. 32. @try { UIView *view = [UIView new]; [view addSubview:nil]; NSLog(@"◎"); }@catch (NSException *exception) { NSLog(@"exception! %@", exception); }
  33. 33.
  34. 34. これは例外の方がよく ないか?
  35. 35. 凶悪なやつ
  36. 36. CFRetain(nil); " CFRelease(nil);
  37. 37. SIGKILL
  38. 38. nilでエクセプションが発生す る場合を覚えて、世の中から クラッシュを無くそう

×