異常處理

異常處理

  • 在日常開(kāi)發(fā)中烘跺,我們經(jīng)常會(huì)自定義很多東西,這些代碼調(diào)用過(guò)程中需要傳遞必要的參數(shù)
  • 如果參數(shù)傳遞不正常脂崔,那么會(huì)引起程序崩潰等后果
  • 如果這個(gè)參數(shù)必須傳遞正確,那么我們可以對(duì)傳遞不正確的參數(shù)進(jìn)行異常的拋出
  • 前提條件是:必須傳遞正確
// 第一種方式:
@throw [NSException exceptionWithName:@"代碼出錯(cuò)" reason:@"出錯(cuò)原因" userInfo:nil];

// 第二種方式:
[NSException raise:@"代碼出錯(cuò)" format:@"出錯(cuò)原因"];
  • 上面這兩種方式效果一樣砌左,都會(huì)引起程序閃退
  • 如果不是必須這樣,那么可以直接返回nil汇歹,或者使用try-catch-finally語(yǔ)句
@try {
    // 容易出錯(cuò)的代碼
    // 這一部分代碼,一旦哪一行出錯(cuò)秤朗,立即停止執(zhí)行,跳轉(zhuǎn)到catch中執(zhí)行代碼
} @catch (NSException *exception) {
    // 出錯(cuò)之后執(zhí)行的代碼
} @finally {
    // 最后執(zhí)行的代碼
    // 正確也會(huì)執(zhí)行取视,出錯(cuò)也會(huì)執(zhí)行
}

捕獲異常

  • 開(kāi)發(fā)中我們經(jīng)常需要捕獲異常硝皂,需要查看異常發(fā)生時(shí)的調(diào)用棧信息
  • 在OC中作谭,獲取異常信息有一個(gè)方法:在程序剛啟動(dòng)的時(shí)候設(shè)置捕捉異常的回調(diào)
  • NSSetUncaughtExceptionHandler
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 設(shè)置捕捉異常的回調(diào)
    NSSetUncaughtExceptionHandler(handleException);
    return YES;
}
/**
 * 攔截異常
 */
void handleException2(NSException *exception)
{
    NSMutableDictionary *info = [NSMutableDictionary dictionary];
    info[@"callStack"] = [exception callStackSymbols]; // 調(diào)用棧信息(錯(cuò)誤來(lái)源于哪個(gè)方法)
    info[@"name"] = [exception name]; // 異常名字
    info[@"reason"] = [exception reason]; // 異常描述(報(bào)錯(cuò)理由)
     //[info writeToFile: atomically:];// 寫(xiě)入沙盒
}

// 如果想有異常的時(shí)候程序不閃退
void handleException(NSException *exception)
{
    [[UIApplication sharedApplication].delegate performSelector:@selector(handle)];
}
- (void)handle
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"程序出錯(cuò)了" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alertView show];
    
    // 重新啟動(dòng)RunLoop
    [[NSRunLoop currentRunLoop] addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
    [[NSRunLoop currentRunLoop] run];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    exit(0);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稽物,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子折欠,更是在濱河造成了極大的恐慌贝或,老刑警劉巖吼过,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咪奖,居然都是意外死亡盗忱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)羊赵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)趟佃,“玉大人,你說(shuō)我怎么就攤上這事昧捷∠姓眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵靡挥,是天一觀的道長(zhǎng)序矩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)跋破,這世上最難降的妖魔是什么簸淀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮幔烛,結(jié)果婚禮上啃擦,老公的妹妹穿的比我還像新娘。我一直安慰自己饿悬,他們只是感情好令蛉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著狡恬,像睡著了一般珠叔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弟劲,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天祷安,我揣著相機(jī)與錄音,去河邊找鬼兔乞。 笑死汇鞭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庸追。 我是一名探鬼主播霍骄,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼淡溯!你這毒婦竟也來(lái)了读整?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咱娶,失蹤者是張志新(化名)和其女友劉穎米间,沒(méi)想到半個(gè)月后强品,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體屈糊,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年困曙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谦去。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳄哭。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妆丘,死狀恐怖局劲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鱼填,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布愤惰,位于F島的核電站宦言,受9級(jí)特大地震影響商模,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜施流,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一嫂沉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杏糙,春花似錦、人聲如沸宏侍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绷耍。三九已至,卻和暖如春诸典,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狐粱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工胆数, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒋搜。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓齿诞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親祷杈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 應(yīng)用程序執(zhí)行時(shí),可能遇到各種可能的錯(cuò)誤互站。C#使用異常來(lái)處理這些錯(cuò)誤,異常將有關(guān)錯(cuò)誤的信息封裝在一個(gè)類(lèi)中胡桃。異常設(shè)計(jì)用...
    CarlDonitz閱讀 835評(píng)論 0 0
  • Java異常控制機(jī)制又被稱(chēng)為“違例控制機(jī)制”膏潮。捕獲程序錯(cuò)誤最理想的時(shí)機(jī)是在編譯階段,這樣可以徹底避免錯(cuò)誤的代碼運(yùn)行...
    kelgon閱讀 4,254評(píng)論 2 50
  • 轉(zhuǎn)載文章,僅用于個(gè)人查閱和學(xué)習(xí)悔耘。原文鏈接:http://www.reibang.com/p/15872cba211...
    Jayden_Cao閱讀 1,237評(píng)論 0 1
  • 本節(jié)內(nèi)容如下: 什么是異常衬以,對(duì)異常的解釋和描述校摩,口語(yǔ)描述和專(zhuān)業(yè)術(shù)語(yǔ)的聯(lián)系 代碼中出現(xiàn)錯(cuò)誤的處理手段 異常處理方式什...
    大牧莫邪閱讀 705評(píng)論 0 0
  • 1)故鄉(xiāng)秋月 多年的漂泊衙吩,歷經(jīng)的辛酸屈辱互妓;又一季月圓冯勉,心中感慨萬(wàn)千摹芙。 故鄉(xiāng)的明月,故鄉(xiāng)的黑土浮禾。故鄉(xiāng)兒時(shí)的玩伴和竹馬...
    A風(fēng)流墨客A閱讀 344評(píng)論 0 7