@ ট্রিট - সিটি ব্লক অবজেক্টিভ-সি


193

@ ট্র্রি ব্লক কাজ করে না কেন? এটি অ্যাপটিকে ক্র্যাশ করেছে, তবে এটি @ ট্রাই ব্লকটি ধরা পড়ার কথা ছিল।

 NSString* test = [NSString stringWithString:@"ss"];

 @try {
    [test characterAtIndex:6];

 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }

আপনি কি নিশ্চিত যে এটি অন্য কিছু নয় কারণ উপরে আপনি যে সঠিক কোডটি পেস্ট করেছেন তা ঠিকঠাক কাজ করে। 2010-07-29 16: 45: 57.677 পরীক্ষা [93103: 207] ব্যতিক্রম: *** - [এনএসসিএফএস স্ট্রিং ক্যারেক্টারঅ্যাট ইন্ডেক্স:]: সীমা বা ইনডেক্সের বাইরে 2010-07-29 16: 45: 57.678 পরীক্ষা [93103: 207] শেষ অবধি
mbogh

2
আপনি এনএসএসটিং * পরীক্ষা = [এনএসএস স্ট্রিং উইথস্ট্রিং: @ "এসএস"] প্রতিস্থাপন করতে পারেন; এনএসএসটিংয়ের সাথে * পরীক্ষা = @ "এসএস";
ডুয়েন-হোয়া

উত্তর:


136

সমস্ত নিখুঁতভাবে কাজ :)

 NSString *test = @"test";
 unichar a;
 int index = 5;
    
 @try {
    a = [test characterAtIndex:index];
 }
 @catch (NSException *exception) {
    NSLog(@"%@", exception.reason);
    NSLog(@"Char at index %d cannot be found", index);
    NSLog(@"Max index is: %lu", [test length] - 1);
 }
 @finally {
    NSLog(@"Finally condition");
 }

লগইন করুন:

[__NSCFConstantString চরিত্রআটিআইডেক্স:]: সীমা ছাড়িয়ে বা রেঞ্জ বা সূচক

5 সূচীতে চর খুঁজে পাওয়া যাবে না

সর্বোচ্চ সূচক: 3

শেষ অবধি শর্ত


8
সঠিক তবে কিছুটা বিভ্রান্তিকর - মনে রাখবেন যে @ ফিনালি ব্লকটি দুটি ক্ষেত্রে কার্যকর করা হয়, অর্থাত্ ব্যতিক্রম ব্যতীত ছুঁড়ে ফেলা হয়নি তা নির্বিশেষে।
এলেেন্ডুরউইন

হ্যাঁ, আমি এটি মিস করছি :)
আইটাক্স

@ এলেন্দুরউইন উল্লিখিত হিসাবে ঠিক করুন।
সানিচ

78

এখন আমি সমস্যাটি খুঁজে পেয়েছি।

obj_exception_throwআমার ব্রেকপয়েন্টগুলি থেকে অপসারণ এটি সমাধান করেছে। এখন এটি @tryব্লকটির দ্বারা ধরা পড়েছে এবং NSSetUncaughtExceptionHandlerকোনও @tryব্লক অনুপস্থিত থাকলে এটি পরিচালনা করবে ।


10
যদি আপনি ডিবাগারটি বিরতিতে চালিয়ে যান তবে আপনার ব্যতিক্রমটি আপনার হ্যান্ডলারের হাতে ধরা পড়ে এবং ধরা পড়েছে।
জেরেমিপি

1

উদ্দেশ্য-সি জাভা নয়। অবজেক্টিভ-সি ব্যতিক্রমগুলিকে সেগুলি বলা হয়। ব্যতিক্রমসমূহ! ত্রুটি পরিচালনার জন্য এগুলি ব্যবহার করবেন না। এটি তাদের প্রস্তাব নয়। অক্ষরআউটআইডেক্স ব্যবহারের আগে কেবল স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করুন এবং সবকিছু ঠিক আছে ...


অবজেক্টিভ-সিতে ট্র্যাক-ক্যাচ ব্যবহার করার পরামর্শ সাধারণত দেওয়া হয় না কারণ এটি সম্ভাব্যত এআরসিটিকে বিশৃঙ্খলা করতে পারে।
ধীরে ধীরে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.