iOS被開發(fā)者遺忘在角落的NSException(轉(zhuǎn))

原文地址iOS被開發(fā)者遺忘在角落的NSException-其實(shí)它很強(qiáng)大 - CocoaChina_讓移動開發(fā)更簡單

1.自定義expection

NSString*exceptionName =@"自定義異常";//異常的原因

NSString*exceptionReason =@"我長的太帥了,所以程序崩潰了";

NSDictionary*exceptionUserInfo =nil;

NSException*expection = [NSException exceptionWithName:exceptionNamereason:exceptionReasonuserInfo:exceptionUserInfo];

NSString*aboutMe =@"太好了";

if([aboutMeisEqualToString:@"太好了"]) {

@throwexpection;

}

出現(xiàn)的效果


2.在編寫代碼實(shí)際可能應(yīng)用到

1、 若自己封裝一套SDK跟压,若要提示哪里出錯(cuò),那么就可以使用NSException辆它。就像上面NSException的基本用法中的代碼一樣榜晦。

2玲献、可以用來捕獲異常软舌,防止程序的崩潰才漆。當(dāng)你意識到某段代碼可能存在崩潰的危險(xiǎn),那么你就可以通過捕獲異常來防止程序的崩潰佛点。

NSString *nilStr = nil;

NSMutableArray?*arrayM?=?[NSMutableArray?array];

@try?{

//如果@try中的代碼會導(dǎo)致程序崩潰醇滥,就會來到@catch

//將一個(gè)nil插入到可變數(shù)組中,這行代碼肯定有問題

[arrayM?addObject:nilStr];

}

@catch?(NSException?*exception)?{

//如果@try中的代碼有問題(導(dǎo)致崩潰),就會來到@catch

//在這里你可以進(jìn)行相應(yīng)的處理操作

//如果你要拋出異常(讓程序崩潰),就寫上?@throw?exception

}

@finally?{

//@finally中的代碼是一定會執(zhí)行的

//你可以在這里進(jìn)行一些相應(yīng)的操作

}


3.實(shí)際代碼中的使用

3.1當(dāng)出現(xiàn)異常的時(shí)候直接拋出異常超营,說明異常的原因

- (void)addDataToArrayWithObject:(NSString*)object

{

@try{

[self.contentArrayaddObject:object];

}@catch(NSException *exception) {

NSString*exceptionName =@"自定義異常";//異常的原因

NSString*exceptionReason = [NSStringstringWithFormat:@"%@——%@",[self class],@"addDataToArrayWithObject方法中數(shù)組添加的內(nèi)容不能為空"];

NSDictionary*exceptionUserInfo =nil;

NSException*expection = [NSException exceptionWithName:exception Namereason:exceptionReason userInfo:exceptionUserInfo];

if(object ==nil) {

@throwexpection;// 此處拋出異常提醒

}

}@finally{

}

}



3.2 出現(xiàn)異常鸳玩,不拋出異常,只是對錯(cuò)誤的問題進(jìn)行更改

- (void)addDataToArrayWithObject:(NSString*)object

{

@try{

[self.contentArrayaddObject:object];

}@catch(NSException *exception) {

if(object ==nil) {// 進(jìn)行簡單的處理

[self.contentArray removeLastObject];

}

}@finally{

}

}

3.3在finally中可以放一些操作演闭。這個(gè)方法是一定會執(zhí)行的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末不跟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子船响,更是在濱河造成了極大的恐慌躬拢,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件见间,死亡現(xiàn)場離奇詭異聊闯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)米诉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門菱蔬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人史侣,你說我怎么就攤上這事拴泌。” “怎么了惊橱?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵蚪腐,是天一觀的道長。 經(jīng)常有香客問我税朴,道長回季,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任正林,我火速辦了婚禮泡一,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘觅廓。我一直安慰自己鼻忠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布杈绸。 她就那樣靜靜地躺著帖蔓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝇棉。 梳的紋絲不亂的頭發(fā)上讨阻,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機(jī)與錄音篡殷,去河邊找鬼钝吮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛板辽,可吹牛的內(nèi)容都是我干的奇瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼劲弦,長吁一口氣:“原來是場噩夢啊……” “哼耳标!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邑跪,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤次坡,失蹤者是張志新(化名)和其女友劉穎呼猪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砸琅,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宋距,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了症脂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谚赎。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诱篷,靈堂內(nèi)的尸體忽然破棺而出壶唤,到底是詐尸還是另有隱情,我是刑警寧澤棕所,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布闸盔,位于F島的核電站,受9級特大地震影響橙凳,放射性物質(zhì)發(fā)生泄漏蕾殴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一岛啸、第九天 我趴在偏房一處隱蔽的房頂上張望钓觉。 院中可真熱鬧,春花似錦坚踩、人聲如沸荡灾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽批幌。三九已至,卻和暖如春嗓节,著一層夾襖步出監(jiān)牢的瞬間荧缘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工拦宣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留截粗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓鸵隧,卻偏偏與公主長得像绸罗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子豆瘫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

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