Error State vs. Error Exception


๐Ÿ‘€ When we use Error State?

์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์—๋Ÿฌ์ผ ๊ฒฝ์šฐ try/catch๋ฅผ ํ†ตํ•ด throw๋ฌธ์„ ๋‚จ์šฉํ•˜์ง€ ๋ง๊ณ , Error State์„ ์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ ํ‘œ์‹œ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

// error state ์‚ฌ์šฉ ์˜ˆ์‹œ
type SuccessState = { 
        result: 'success'
    }
    type NetworkErrorState = {
        result: 'fail',
        reason: 'offline' | 'down' | 'timeout'
    }

    type ResultState = SuccessState | NetworkErrorState;
    class NetworkClient {
        tryConnect(): ResultState {
            return {
                result: 'success'
            }
        }
    }