Capturande errores en Vuex y componentes

Buenos días!!

En mi store de autenticación, tengo el siguiente método:

async login ({ commit }, payload) {
try {
const response = await axiosInstance
.post(‘account/login’, {
usuario: payload.username,
password: payload.password
})
if (response.data.accessToken) {
commit(‘setUser’, response.data)
}
return response.data
} catch (e) {
commit(‘clearUser’)
const msg = e.response ? e.response.data : ‘Ha ocurrio un error. Por favor, vuelva a intentarlo.’
return Promise.reject(msg)
}
}

En el componente desde el cual lo llamo, tengo el siguiente método :

onSubmit: async function () {
const model = {
username: this.userName,
password: this.password
}
this.isLoading = true
try {
const response = await this.login(model)
console.log(response)
this.$router.push(’/’)
} catch (e) {
const msg = e.response ? e.response.data : ‘Ha ocurrio un error. Por favor, vuelva a intentarlo.’
this.$q.notify({
message: msg,
color: ‘negative’,
icon: ‘warning’
})
} finally {
this.isLoading = false
}
}

La cuestión es que todo funciona perfectamente, no obstante, “me agobia”, tener que controlar los errores tanto en la store como en el componente con la clausura try…catch.
Me da la sensación que estoy reduplicando código.
De quien seria la responsabilidad de controlar los errores devueltos por la llamada a mi API? Del store… del componente… de ambos???
De que manera se podría optimizar el código anterior, o liberar de responsabilidad…?

No se si me he explicado correctamente.

Gracias de antemano por la ayuda