how to good handle error ?
Unanswered
American Chinchilla posted this in #help-forum
American ChinchillaOP
I'm having a bit of trouble understanding error handling for my API. 
Should I put my try-catch in my API class or in each component?
If I understand correctly, let's say I login my user and the credentials are wrong, the server will return a 401 invalid credential error.
However, in the console log it will show me :
auth.js:6 : POST http://localhost:3333/api/auth/login 400 (Bad Request)
Now this is a ‘normal’ error and so I have to add it to my store Error for the message.
What are the best practices for building my exception catch?
I have a :
and a store zustand :
Should I put my try-catch in my API class or in each component?
If I understand correctly, let's say I login my user and the credentials are wrong, the server will return a 401 invalid credential error.
However, in the console log it will show me :
auth.js:6 : POST http://localhost:3333/api/auth/login 400 (Bad Request)
Now this is a ‘normal’ error and so I have to add it to my store Error for the message.
What are the best practices for building my exception catch?
I have a :
export default class AuthApi extends Api{
  static async login(credentials){
    const response = await fetch(`${this.baseUrl}/api/auth/login`, {
      method: ‘POST’,
      headers: this.getHeaders(),
      body: JSON.stringify(credentials)
    });
    if (!response.ok) {
      const errorData = await response.json();
      return {type: ‘error’, message: errorData.message || response.statusText}
    }
    return await response.json();
  }and a store zustand :
const useErrorStore = createSelectors(create((set) => ({
    error: {
        type: null,
        message: null,
    },
    setError: ({ type, message }) => set({ error: { type, message } }),
    clearError: () => set({ error: { type: null, message: null } }),
})));1 Reply
American ChinchillaOP
and to send api : 
const handleSubmit = async (e) => {
    e.preventDefault();
    setLoading(true);
    try {
      const response = await AuthApi.login({ email, password });
      setToken(response.token);
      setUser(response.user);
      setAuthenticated(true);
      setError({ type: 'success', message: 'Logged in successfully' });
    } catch (error) {
      setError({ type: 'error', message: error.message });
    } finally {
      setLoading(false);
    }
  };