@SideWest
Python.Новичок

Как лучше обрабатывать ошибки от промисов?

Есть функция, которая обрабатывает запрос и возвращает промис
async function request () {

    let axiosRequest = await axios( { method: 'post', url: `https://api.vk.com/method/` } ).catch( error => {
        // noti( error.toJSON().message )
        return Promise.reject( error.toJSON().message )
    } )

    if ( axiosRequest ) {
        let { data } = axiosRequest
        return data.response ? Promise.resolve( data.response ) : Promise.reject( data.error )
    }
}


( async () => {
    let result = await request().catch( err => console.log( err ) )
    console.log( result ); // тут будет undefined

} )()


Но как мне будет правильнее работать с этой ошибкой в изначальной функции?

Приходит на ум решение с if, но верно ли так делать
let result = await request().catch( err => console.log( err ) )
    console.log( result ); // тут будет undefined

    if ( !result ) {
        // снова делаю запрос с другими параметрами или обрабатываю капчу
    }


Может я вообще неправильно понимаю идею catch'ей?

Прошу подсказать
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
соблюдать один стиль, или
promise.then().catch()

или
try { await promise } catch { }

try {
  let result = await request()
  // ок что дальше?
} catch (oopsError) {
   // снова делаю запрос с другими параметрами или обрабатываю капчу
} finally {
  // дополнительно этот блок, если что-то должно выполниться в любом случае
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы