Пустой объект Data
заставляет метод init
выдавать ошибку
Указанные данные не были действительными в формате JSON.
до того, как напечатано "Hello".
Если вы хотите получить пустой Response
объект (при условии, что вам не нужно вызывать какой-либо назначенный инициализатор), перехватите dataCorrupted
ошибку декодирования
struct Response : Decodable {}
var response : Response?
do {
response = try JSONDecoder().decode(Response.self, from: Data())
} catch DecodingError.dataCorrupted(let context) where (context.underlyingError as NSError?)?.code == 3840 { // "The given data was not valid JSON."
response = Response()
} catch { print(error) }