Исключения при разборе JSON в AJAX в PHP

Пусть сервер присылает нам JSON и мы разбираем его с помощью JSON.parse. Данный метод может выбрасывать исключение. Это будет в том случае, если JSON некорректный. Это значит, что в следующем коде блок catch сработает не только в случае ошибки сети, но и в случае некорректного JSON:

script.jstry {
  let response = await fetch('/ajax.php');
  
  if (response.ok) {
    let json = await response.text();
    let data = JSON.parse(json);
    console.log(data);
  } else {
    console.log('server error');
  }
} catch {
  console.log('network error');
}

Давайте исправим ситуацию и обернем разбор JSON в свой блок try-catch:

script.jstry {
  let response = await fetch('/ajax.php');
  
  if (response.ok) {
    let json = await response.text();
    
    try {
      let data = JSON.parse(json);
      console.log(data);
    } catch {
      console.log('json error');
    }
  } else {
    console.log('server error');
  }
} catch {
  console.log('network error');
}

Аналогичная ситуация будет с методом json объекта response:

script.jstry {
  let response = await fetch('/ajax.php');
  
  if (response.ok) {
    try {
      let data = await response.json();
      console.log(data);
    } catch {
      console.log('json error');
    }
  } else {
    console.log('server error');
  }
} catch {
  console.log('network error');
}
Задание 1

Отдайте с сервера некорректный JSON. Убедитесь, что это приведет к срабатыванию общего try-catch.

Задание 2

Исправьте проблему, добавив еще один try-catch для разбора JSON.