8
JSONSerialization.data(withJSONObject:options:)
(在Swift 2中的dataWithJSONObject
)被宣佈爲throws
。然而,通過無效對象會導致系統崩潰,而不是開捕錯誤:JSONSerialization.data(withJSONObject :)在什麼情況下會拋出可捕獲的錯誤?
do {
// Crash
try JSONSerialization.data(
withJSONObject: NSObject(),
options: [])
}
catch
{
// Never reached
print("Caught error:", error)
}
爲什麼這個方法聲明「拋出」呢?它在什麼情況下會拋出異常?
不知道是什麼導致錯誤被拋出,這使得很難知道如何處理錯誤,並且使編寫驗證處理的測試成爲不可能。
這並不回答「在什麼情況下JSONSerialization拋出錯誤」的問題。我會擴展這個問題並詢問「JSONSerialization拋出什麼錯誤」。到目前爲止,我還沒有看到類文檔中的任何地方。 – BTRUE
@BTRUE:這個答案(1)給出了JSONSerialization引發錯誤的準確條件,(2)提供了重現這些條件的代碼,以及(3)傳遞了蘋果公司解釋爲什麼其他失敗條件不會拋出的原因。我不知道你還想要什麼。 –
我認爲你可能會混淆異常和錯誤。因爲發生異常,正在發生崩潰。如果該方法拋出一個錯誤,它將是可捕獲的。他們是兩個不同的東西。我和我以爲你想要發現的是,這個方法會拋出什麼錯誤,什麼時候拋出它們。你看到的例外,而不是一個錯誤。 – BTRUE