JSONSerialization.data(withJSONObject:options:)
(aka dataWithJSONObject
in Swift 2) ist throws
deklariert. Allerdings ungültige Objekte vorbei verursacht einen Absturz, kein abfangbare Fehler:Unter welchen Umständen verursacht JSONSerialization.data (withJSONObject :) einen abfangbaren Fehler?
do {
// Crash
try JSONSerialization.data(
withJSONObject: NSObject(),
options: [])
}
catch
{
// Never reached
print("Caught error:", error)
}
Warum ist diese Methode deklariert „wirft“, dann? Unter welchen Umständen wirft es eine Ausnahme?
Wenn Sie nicht wissen, wodurch ein Fehler ausgelöst wird, ist es schwierig zu wissen, wie mit dem Fehler verfahren wird, und es ist nicht möglich, Tests zu schreiben, die diese Behandlung bestätigen.
Dies beantwortet nicht die Frage "unter welchen Umständen verursacht JSONSerialization einen Fehler". Ich würde die Frage erweitern und fragen: "Welche Fehler wirft JSONSerialization". Bisher habe ich das nirgends in der Klassendokumentation gesehen. – BTRUE
@BTRUE: Diese Antwort (1) gibt die genauen Bedingungen an, unter denen JSONSerialization einen Fehler auslöst, (2) stellt Code zur Verfügung, um diese Bedingungen zu reproduzieren, und (3) gibt Apples Erklärung weiter, warum einige andere Fehlerbedingungen nicht ausgelöst werden. Ich weiß nicht, was du sonst noch willst. –
Ich denke, Sie können Ausnahme und Fehler verwirren. Der Absturz geschieht, weil eine Ausnahme ausgelöst wird. Wenn die Methode einen Fehler verursacht, wäre sie abfangbar. Sie sind zwei verschiedene Dinge. Was ich, und ich dachte du, versuchte herauszufinden, welche Fehler die Methode werfen kann und wann sie sie wirft. Sie sehen die Ausnahme, keinen Fehler. – BTRUE