Blog>
Snippets

Implementing Error Handling in Sagas

Exemplify error handling within a saga, using `try`/`catch` blocks to gracefully manage API call failures and dispatch error handling actions.
import { call, put } from 'redux-saga/effects';
import { sagaActions } from './sagaActions';
import Axios from 'axios';

function* fetchUserDataSaga(action) {
  try {
    const response = yield call(Axios.get, 'https://someapi.com/userdata');
    yield put({type: sagaActions.FETCH_USER_SUCCESS, payload: response.data});
  } catch (error) {
    yield put({type: sagaActions.FETCH_USER_FAILURE, error: error.message});
  }
}
This piece of code represents a saga that attempts to fetch user data from an external API using Axios. Using a try/catch block, it gracefully handles any errors that occur during the API call. If the call is successful, it dispatches an action to update the state with the received user data. In case of an error, it dispatches an action that can be used to update the state to reflect the error, allowing for error handling in the UI.