JsonAdapter.fromJson function are annotated with @Throws(IOException::class) indicating that is the exception that they will throw when there is an error when deserializing a json string, however what is actually thrown is a JsonDataException which is a RuntimeException meaning that if you try to catch the document IOException, your error handling code will be skipped.
For example, consider the following code
@JsonClass(generateAdapter = true)
data class MyType(@Json(name = "one") override val param: String)
...
try {
myTypeAdapter.fromJson("{}") // just an empty json
catch (e: IOException) {
// exception will not be caught
}
JsonDataException should extend IOException, or JsonAdapter.fromJson should be updated to indicate that they throw JsonDataException
JsonAdapter.fromJson
function are annotated with@Throws(IOException::class)
indicating that is the exception that they will throw when there is an error when deserializing a json string, however what is actually thrown is a JsonDataException which is aRuntimeException
meaning that if you try to catch the documentIOException
, your error handling code will be skipped.For example, consider the following code
JsonDataException
should extendIOException
, orJsonAdapter.fromJson
should be updated to indicate that they throwJsonDataException