Sparround

Xəta və yüklənmə vəziyyətlərinin idarəsi

Hər async ekranın ən azı dörd vəziyyəti var və üçüncü ilə dördüncü ən çox unudulan hissədir:

  • Loading — data gəlir
  • Data — nəticə var
  • Empty — sorğu uğurlu, amma nəticə boşdur (bu, xəta DEYİL)
  • Error — sorğu uğursuz oldu

Boş siyahını "heç nə göstərməmək" kimi buraxmaq klassik UX səhvidir: istifadəçi tətbiqin sındığını düşünür. Boş vəziyyət izahlı olmalıdır — nə üçün boşdur və nə etmək olar.

Xətaları UI-a çatdırmağın iki yolu var:

  • Exception atmaq — Dart-ın təbii mexanizmi; try/catch ilə tutulur. Sadədir, amma imza xətanın mümkünlüyünü göstərmir
  • Result/Either tipi qaytarmaqsealed class Result { Success | Failure }; xətanın mümkünlüyü tipdə görünürswitch onu idarə etməyə məcbur edir

Hər iki yanaşma legitimdir. Vacib olan ardıcıllıqdır: bir layihədə ikisini qarışdırmaq ən pis variantdır.

Eyni dərəcədə vacib qayda: texniki xəta mesajını istifadəçiyə göstərmə. SocketException: Failed host lookup istifadəçi üçün heç nə demir — data qatında xətanı domen tipinə çevir, UI isə ona uyğun anlaşılan mesaj göstərsin.

Interview ipucu. "Xətaları necə idarə edirsən?" sualında try/catch demək kifayət deyil. Güclü cavabda üç element var: (1) xəta harada tutulur — data qatında, domen tipinə çevrilərək; (2) istifadəçi nə görür — anlaşılan mesaj + təkrar cəhd düyməsi; (3) developer nə görür — loglama və ya crash reporting. Boş vəziyyəti xətadan ayırmağı da qeyd et — bu, çox az namizədin dediyi detaldır.

📚 Mənbələr və sənədlər