iOS被開發者遺忘在角落的NSException(轉)

一個蘿蔔壹個坑發表於2017-12-22

原文地址iOS被開發者遺忘在角落的NSException-其實它很強大 - CocoaChina_讓移動開發更簡單

1.自定義expection

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

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

NSDictionary*exceptionUserInfo =nil;

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

NSString*aboutMe =@"太好了";

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

@throwexpection;

}

出現的效果


iOS被開發者遺忘在角落的NSException(轉)

2.在編寫程式碼實際可能應用到

1、 若自己封裝一套SDK,若要提示哪裡出錯,那麼就可以使用NSException。就像上面NSException的基本用法中的程式碼一樣。

2、可以用來捕獲異常,防止程式的崩潰。當你意識到某段程式碼可能存在崩潰的危險,那麼你就可以通過捕獲異常來防止程式的崩潰。

NSString *nilStr = nil;

NSMutableArray *arrayM = [NSMutableArray array];

@try {

//如果@try中的程式碼會導致程式崩潰,就會來到@catch

//將一個nil插入到可變陣列中,這行程式碼肯定有問題

[arrayM addObject:nilStr];

}

@catch (NSException *exception) {

//如果@try中的程式碼有問題(導致崩潰),就會來到@catch

//在這裡你可以進行相應的處理操作

//如果你要丟擲異常(讓程式崩潰),就寫上 @throw exception

}

@finally {

//@finally中的程式碼是一定會執行的

//你可以在這裡進行一些相應的操作

}


3.實際程式碼中的使用

3.1當出現異常的時候直接丟擲異常,說明異常的原因

- (void)addDataToArrayWithObject:(NSString*)object

{

@try{

[self.contentArrayaddObject:object];

}@catch(NSException *exception) {

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

NSString*exceptionReason = [NSStringstringWithFormat:@"%@——%@",[self class],@"addDataToArrayWithObject方法中陣列新增的內容不能為空"];

NSDictionary*exceptionUserInfo =nil;

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

if(object ==nil) {

@throwexpection;// 此處丟擲異常提醒

}

}@finally{

}

}


iOS被開發者遺忘在角落的NSException(轉)


3.2 出現異常,不丟擲異常,只是對錯誤的問題進行更改

- (void)addDataToArrayWithObject:(NSString*)object

{

@try{

[self.contentArrayaddObject:object];

}@catch(NSException *exception) {

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

[self.contentArray removeLastObject];

}

}@finally{

}

}

3.3在finally中可以放一些操作。這個方法是一定會執行的

相關文章