2015-12-08 25 views
16

içinde art arda birden çok denemeyi nasıl ele alırım Deneme gerektiren 2 deyimi yürütmesi gereken bir kod bloğum var. yuvada deneyin en daha iyidir ve her biriHızlı 2.0

do { 
    try thingOne() 
    do { 
     try thingTwo() 
    } catch let error as NSError { 
      //handle this specific error 
    } 
} catch let error as NSError { 
     //handle the other specific error here 
} 

kendi do {} catch {} var ... ya birinde deneyin bloğunu yapmak ve sırayla çalıştırmak sarın?

do { 

    try thingOne() 
    try thingTwo() 
} catch let error as NSError { 
    //do something with this error 
} 

İkinci senaryo ilkinden daha kolay okunur görünse de olacak bunlardan biri bir hata atarsa ​​o catch çalışır?

Hatalar genellikle yeterince genel olmadıkça, atılan farklı hatalar arasında ayrım yapmam gerekiyor, o zaman önemli olmayabilir. Apple belgelerine baktım ve bununla ilgili hiçbir şey görmedim.

cevap

14

Ben ikinci yolu daha iyi olduğunu düşünüyorum

varsayalım ben bu log Bu iki fonksiyon Sonra

func thingOne() throws{ 
     print("Thing 1") 
     throw CustomError.Type1 
} 
func thingTwo() throws{ 
    print("Thing 2") 

    throw CustomError.Type2 

} 
enum CustomError:ErrorType{ 
    case Type1 
    case Type2 
} 

Bu

do { 
     try thingOne() 
     try thingTwo() 
    } catch CustomError.Type1 { 
     print("Error1") 
    } catch CustomError.Type2{ 
     print("Error2") 
    } catch { 
     print("Not known\(error) ") 
    } 

gibi arayacak var

Thing 1 
Error1 

I Hata, bu

Thing 1 
Thing 2 
Error2 
+0

herkes, ben de girişi için teşekkürler bu şekilde mi günlüğe kaydeder atar vermez f thingOne() bolnad