Swift Error Handling

Ata Anıl Turgay
blutv
Published in
3 min readJun 18, 2021

Herkese merhaba, bu yazıda kendi validation rule setimizi yazmayı ve validation’a takılan hataları handle etme yöntemlerini inceleyeceğiz. Eğer yazdığımız kontrollerde bir hata oluşursa bu hata throw ifadesi ile fırlatılacak ve catch bloğu ile yakalayacağız, ardından da ekrana bir hata popup’ı basacağız. Haydi hemen başlayalım!

Elimizde bir login ekranı olduğunu düşünerek bir ekran tasarlayalım. Storyboard’a bir ViewController ekleyerek içerisine iki adet UITextField ve bir adet UIButton ekliyoruz.

Daha sonra LoginViewController ismini verdiğimiz yeni bir ViewController class’ı açıyoruz. Storyboard üzerinden bağlantılarımızı ekliyoruz.

File → New File → Swift File seçtikten sonra Validations isimli bir dosya yaratıyoruz. Bu ismi vermemizin sebebi bu dosya içerisinde şimdilik Login validation rule setleri yer alacak olsa da ileride farklı validationlar ekleme ihtimalimizdir. Örneğin cep telefon numarası, plaka numarası, kimlik numarası vb.

Açılan bu yeni boş swift dosyasında LoginValidations adını vererek bir class oluşturuyoruz. İstediğimiz şey burada “error type”lar yer alsın ve her birine ait title ve message olsun.

Tipi Error olan LoginError adını verdiğimiz bir enum oluşturduk. Şimdi sıra kontrollerimizi yazmaya geldi.

Yazdığımız fonksiyonda dikkat çeken yer throws kullanımıdır. Eğer bir hata fırlatılacaksa ve fonksiyonun parametreleri varsa parametrelerden sonraki alana throws ifadesi yazılır. Kontrollerimizde sırayla üç adet if statement bulunmaktadır. İlki email veya password alanlarının boş olma kontrolüdür, eğer ikisinden biri boş ise incompleteForm hatası fırlatılır. İkinci kontrolde girilen email adresinin geçerli olup olmadığı kontrol edilir. Bunun için de yazdığımız ValidationRegex içerisindeki email type’ına ait validate fonksiyonuna ekranda girilen email adresi verilir, eğer geçersiz bir adres girilmiş ise invalidEmail hatası fırlatılır. Üçüncü ve son kontrolümüz girilen password’ün 8 karakter uzunluğunda olup olmadığına bakar, eğer 8 karakterden az girilmiş ise incorrectPasswordLength hatası fırlatılır. Try catch bloğumuza bakmadan önce ValidationRegex içerisinde neler olduğuna bir göz atalım.

Şimdilik içerisinde sadece email için tanımlamalar mevcut. Daha sonra yukarıda bahsettiğimiz gibi telefon numarası, kimlik numarası gibi kontroller için eklemeler yapılabilir. Gelin şimdi LoginViewController class’ını inceleyelim!

loginButton action’ı içerisinde try LoginValidations.shared.login(emailString: emailTextField.text!, passwordString: passwordTextField.text!) komutu ile email ve password alanındaki text’leri yazdığımız validationa göndeririz. Girdiği kontrollerden herhangi birisine takılırsa fırlatılacak hata tiplerini sırayla catch bloğu olarak ekledik. Üç kontrolden birine takılmadan handle etmeyi kaçırdığımız başka bir hata fırlatılırsa da en sondaki default catch bloğu bu hatayı yakalar ve “Unable to login” popup’ı ekrana basılır.

Bu yazıda login ekranı tasarladık ve kendi validation rule setimizi yazarak bu ekrandaki kontrollerimizi gerçekleştirdik. Alert kullanımını github projesine ulaşarak inceleyebilirsiniz.

Projeye ait github linkine buradan ulaşabilirsiniz.

Herkese keyifli araştırmalar ve okumalar…

--

--