Javascript Vuex操作未在axios上抛出try/catch

Javascript Vuex操作未在axios上抛出try/catch,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我正在使用Vue和Vuex,希望能够在我的操作中出现API错误时,在我的组件中显示这些错误。我在这个例子中使用axios 这是一个操作,它应该只执行一个get请求,并在失败时抛出一个错误 export default { async search({ commit }, params) { const result = await axios.get(`http://localhost:3000/search`, params) commit('SET_RESULTS', r

我正在使用Vue和Vuex,希望能够在我的操作中出现API错误时,在我的组件中显示这些错误。我在这个例子中使用axios

这是一个操作,它应该只执行一个get请求,并在失败时抛出一个错误

export default {
  async search({ commit }, params) {
    const result = await axios.get(`http://localhost:3000/search`, params)
    commit('SET_RESULTS', result.data)
  }
}
这是我的Search.vue组件,我希望在我的操作中发生api错误时能够记录“捕获的错误”

methods: {
    onSubmit() {
      try {
        this.$store.dispatch('search', this.value)
      } catch (e) {
        console.log('Caught Error')
      }
    }
  }

我确实会收到红色控制台错误,但不是我在Search.vue中定义的错误。因此,出于某种原因,我的操作没有抛出或我的Search.vue没有捕获

dispatch
返回一个承诺,它不会抛出错误

因此,您将使用
catch
回调:

this.store.dispatch('search',this.value).catch(err=>{
console.log('捕获错误')
}).
如果您想要一个
尝试
/
捕获
,那么您需要使用
异步
/
等待
实现该承诺:

async onSubmit(){
试一试{
等待此。$store.dispatch('search',this.value)
}捕获(e){
console.log('捕获错误')
}
}

dispatch
返回一个承诺,它不会抛出错误

因此,您将使用
catch
回调:

this.store.dispatch('search',this.value).catch(err=>{
console.log('捕获错误')
}).
如果您想要一个
尝试
/
捕获
,那么您需要使用
异步
/
等待
实现该承诺:

async onSubmit(){
试一试{
等待此。$store.dispatch('search',this.value)
}捕获(e){
console.log('捕获错误')
}
}

dispatch
返回承诺,不会抛出错误。因此,您将使用
this.$store.dispatch(…).catch(err=>{…})
。如果您想使用
尝试
/
捕获
,那么您需要使用
异步
/
等待
这个承诺:
等待这个。$store.dispatch(…)
@skille您能从中创建一个答案吗?所以我可以接受它
dispatch
返回一个承诺,它不会抛出错误。因此,您将使用
this.$store.dispatch(…).catch(err=>{…})
。如果您想使用
尝试
/
捕获
,那么您需要使用
异步
/
等待
这个承诺:
等待这个。$store.dispatch(…)
@skille您能从中创建一个答案吗?所以我可以接受