例外訊息敘述
-> 靠,我到底踩到什麼東西? <-
看完這篇文章,例外處理之錯誤訊息描述:HTC One X拍照篇,的把一些過去的經驗和心得有共鳴的寫個記錄下來。
開場
應該大家都有很多經驗:服務的錯誤訊息也描述得很不明確,除了沒有正確抓取 exception 之外,在 UX 的處理上也有問題。
-> 某台灣服務常常會噴的錯誤截圖 <-
令我最印象深刻的,應該是 IIS 的繁體中文錯誤訊息,之前在寫 ASP.NET 的時候,需要二次「翻譯」才會知道他想講什麼。
另外還有在用 Windows 的時後,不定期會噴出一堆錯誤,但是都是噴錯誤碼出來,除了還要自己去查錯誤碼代表什麼意思,有的甚至就算查到,還是看不懂你在寫什麼鬼。(這樣講起來好像都跟微軟有關係齁 :DD)
自己開發時的經驗
這就想到之前在寫登入的功能的時候,在做登入失敗的處理,一直想不通為什麼大部分的服務都只會說「帳號或密碼輸入錯誤」,但是又不會跟你講到底是帳號錯(不存在)還是帳號正確密碼錯?自己做的時候則會分別送不一樣的錯誤訊息,使用者就不會一直 try 一樣的東西,而不知道是哪裡錯。
在和朋友討論之後得知,登入失敗不揭露太多訊息是有資安的考量;至於在這個情形下該怎麼顯示訊息,則需要在安全性與使用者經驗中做平衡。
不過還是有看過有的服務做比較好的:假如帳號不是用 email ,結果使用者輸入 email ,這時候還會提示帳號的組成不一應該是 email ,給使用者明確的訊息指示,他們就知道下一步該怎麼做。
結論
這樣給明確訊息的做法,除了是需要做好正確的 exception 的 throwing 之外,使用者經驗也是有帶到一些。給了明確的指示就可以讓使用者明確知道下一步該怎麼做,而非接到一個訊息、還要去查手冊看到底這個訊息是什麼意思,而造成使用流程中斷。