Исключения при разборе JSON в AJAX в PHP
Пусть сервер присылает нам JSON
и мы разбираем его с помощью JSON.parse.
Данный метод может выбрасывать исключение.
Это будет в том случае, если JSON
некорректный. Это значит, что в следующем
коде блок catch сработает
не только в случае ошибки сети,
но и в случае некорректного JSON:
try {
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:
try {
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:
try {
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');
}
Отдайте с сервера некорректный JSON.
Убедитесь, что это приведет
к срабатыванию общего try-catch.
Исправьте проблему, добавив еще один
try-catch для разбора JSON.