İşlevlerden 0 veya 1 döndürmek ve daha sonra hataları işlemek için if / else kullanmak yerine istisnalar kullanmak ve istisnalar atmak / yakalamak istisnalar kullanmak iyi bir uygulamadır. Böylece kullanıcıyı sorun hakkında bilgilendirmeyi kolaylaştırır.
Hayır hayır hayır!
İstisnaları ve hataları karıştırmayın. İstisnalar, olağanüstü. Hatalar değildir. Bir kullanıcıdan bir miktar ürün girmesini istediğinizde ve kullanıcı "merhaba" olarak girdiğinde, bu bir hatadır. Bu bir istisna değildir: kullanıcıdan geçersiz bir girdi görmekte istisnai bir şey yoktur. Girişleri doğrularken olduğu gibi, istisnai durumlarda neden istisnalar kullanmıyorsunuz? Diğer insanlar bunu zaten açıkladı ve giriş doğrulaması için geçerli bir alternatif gösterdi.
Bu aynı zamanda kullanıcı umurumda değil demektir istisnalar ve özel durumları gösteren düşmanca ve tehlikelidir . Örneğin, bir SQL sorgusunun yürütülmesi sırasında bir istisna genellikle sorgunun kendisini gösterir. Böyle bir mesajı herkese göstermek için risk almak istediğinizden emin misiniz?
bir veritabanı sorunu, yinelenen bir giriş, bir sunucu sorunu, vb. gibi 1'den fazla şey yanlış gidebilir. Kayıt sırasında bir sorun meydana geldiğinde, kullanıcının bilmesi gerekir.
Yanlış. Bir kullanıcı olarak, gerçekten umurumda değil vs ben veritabanı sorunları, yinelenen girdileri, bilmek gerekmez senin sorunlarına. Ne yapmak bilmesi gerek ben zaten mevcut bir kullanıcı adı girilen olmasıdır. Daha önce de belirtildiği gibi, benden yanlış bir girdi bir istisna değil bir hatayı tetiklemelidir.
Bu hatalar nasıl çıktılanır? Bu koşullara bağlıdır. Zaten kullanılmış bir kullanıcı adı için, formu göndermeden önce, kullanıcı adının zaten kullanıldığını söyleyerek, kullanıcı adının yanında görünen küçük bir kırmızı bayrak görmek istiyorum. JavaScript olmadan, aynı bayrak gönderildikten sonra görünmelidir.
Diğer hatalar için, hata içeren bir tam sayfa gösterir veya kullanıcıyı bir şeyin yanlış gittiğini bildirmek için başka bir yol seçersiniz (örneğin, görüntülenecek bir mesaj, ardından sayfanın üst kısmında kaybolur). Bu durumda soru, programlamadan çok kullanıcı deneyimi ile ilgilidir .
Programcılar açısından, hatanın türüne bağlı olarak, hatayı farklı şekillerde yayacaksınız. Örneğin, önceden alınmış bir kullanıcı adı durumunda, AJAX isteği, aşağıdakileri http://example.com/?ajax=1&user-exists=John
gösteren bir JSON nesnesi döndürür:
- Kullanıcının zaten var olduğunu,
- Kullanıcıya gösterilecek hata mesajı.
İkinci nokta önemlidir: hem formu JavaScript devre dışıyken gönderirken hem de JavaScript etkin olarak yinelenen bir kullanıcı adı yazarken aynı iletinin göründüğünden emin olmak istersiniz. Hata iletisi metnini sunucu tarafı kaynak kodunda ve JavaScript'te çoğaltmak istemezsiniz!
Bu aslında Stack Exhange web siteleri tarafından kullanılan tekniktir. Örneğin, kendi yanıtımı yükseltmeye çalışırsam, AJAX yanıtı görüntülenecek hatayı içerir:
{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.",
"Refresh":false}
Ayrıca başka bir yaklaşım seçebilir ve form doldurulmadan önce HTML sayfasındaki hataları önceden ayarlayabilirsiniz. Artıları: Hata mesajını AJAX yanıtında göndermek zorunda değilsiniz. Eksileri: erişilebilirlik ne olacak? CSS olmadan sayfaya göz atmayı deneyin; olası tüm hataların göründüğünü göreceksiniz.