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


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.