處理模板的錯誤習慣的方法說我有一個html/template
類似如下:在golang
<html>
<body>
<p>{{SomeFunc .SomeData}}</p>
</body>
有時SomeFunc
返回一個錯誤。有沒有一種慣用的方式來處理這個問題?
如果我直接寫入ResponseWriter
,那麼在我遇到錯誤之前已經寫入了狀態碼200。
var tmpl *template.Template
func Handler(w http.ResponseWriter, r *http.Request) {
err := tmpl.Execute(w, data)
// "<html><body><p>" has already been written...
// what to do with err?
}
最好我會返回一個狀態碼400或一些這樣的,但我不能看到一個辦法做到這一點,如果我直接在ResponseWriter
使用template.Execute
。有什麼我失蹤?
我** [寫這個(http://elithrar.github.io/article/approximating-html-template-inheritance/)**一而通過'sync.Pool'或其他構造返回緩衝池 - 是解決這個問題的稍微更高效的方法。分配池,獲取緩衝區,寫入緩衝區,然後寫入響應(無錯誤),然後將緩衝區放回池中。否則,你是在點! – elithrar