поймать определенный тип исключения в обещании JavaScript? - PullRequest
0 голосов
/ 17 июня 2019

Я работаю с нди-инстаграм api (javascript).Иногда я получаю ошибки всякий раз, когда я делаю запрос на получение с API.Я хочу отобразить конкретное сообщение об ошибке при возникновении исключения ECONNRESET, а затем отобразить общее сообщение об ошибке для всех других типов исключений.Пока мой код выглядит следующим образом:

instagram.get('users/self/media/recent').then(data => {
    console.log(data)
}).catch(err => {
    console.log(err)
});

Как я могу изменить обещание, чтобы оно также распознавало ECONNRESET исключений и отображало другое сообщение об ошибке при их перехвате?

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Если вы ставите точку останова на console.log(err), а затем осматриваете объект err при достижении точки останова, вы должны быть в состоянии определить, какое свойство объекта err сообщает, что это было ECONNRESET. Trincot говорит, что это code.Затем просто используйте if:

instagram.get('users/self/media/recent').then(data => {
    console.log(data)
}).catch(err => {
    if (err.code === "ECONNRESET") {
        throw new Error("Specific error message");
    } else {
        throw new Error("Generic error message");
    }
});

. В этом коде я перебрасываю ошибку, поэтому обещание отклоняется, исходя из предположения, что вы возвращаете результат этой цепочки во что-то, что сделаетиспользование причины отказа.Если вы просто делаете сообщение прямо в этом обработчике catch, тогда:

instagram.get('users/self/media/recent').then(data => {
    console.log(data)
}).catch(err => {
    if (err.code === "ECONNRESET") {
        // Show the specific error message
    } else {
        // Show the generic error message
    }
});
1 голос
/ 17 июня 2019

Я бы сделал Object.keys(err) в вашем блоке catch, чтобы увидеть ключи, которые предоставляет объект error. Один из этих ключей должен иметь значение с подробной информацией для определения типа ошибки.

Так для ПРИМЕРА:

console.log(Object.keys(err)) ----> ['type','status','description']

if(err.type === 'ECONNRESET' && err.status === {code identifying it}){
   // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...