Go基礎學習記錄 - 編寫Web應用程式 - 錯誤處理

來源:互聯網
上載者:User

錯誤處理

前面的分享加了兩個功能,一個是編輯功能,一個儲存功能

在我們的程式中有幾個地方其實是忽略了錯誤的處理。
這是不好的做法,尤其是因為這樣的做法發生錯誤時,程式會出現意外行為。
更好的解決方案是處理錯誤並向使用者返回錯誤訊息。
這樣,如果出現問題,伺服器將完全按照我們想要的方式運行,並且可以通知使用者。
首先,讓我們處理renderTemplate中的錯誤:

func renderTemplate(w http.ResponseWriter, templateName string, p *Page) {    t, err := template.ParseFiles("template/" + templateName + ".html")    if err != nil {        http.Error(w, err.Error(), http.StatusInternalServerError)        return    }    err = t.Execute(w, p)    if err != nil {        http.Error(w, err.Error(), http.StatusInternalServerError)        return    }}

http.Error函數發送指定的HTTP響應代碼(在本例中為“內部伺服器錯誤”)和錯誤訊息。
將這個放在一個單獨的功能中的決定已經取得了成效。
現在讓我們修複saveHandler:

func saveHandler(w http.ResponseWriter, r *http.Request) {    title := r.URL.Path[len("/save/"):]    body := r.FormValue("body")    p := &Page{        Title: title,        Body:  []byte(body),    }    err := p.save()    if err != nil {        http.Error(w, err.Error(), http.StatusInternalServerError)    }    http.Redirect(w, r, "/view/"+title, http.StatusFound)}

p.save()期間發生的任何錯誤都將報告給使用者

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.