エラーをカスタマイズする方法ビーゴ

Redirectメソッドでジャンプするビーゴ:

1
2
3
func  (this *AddController) Get() {
     this.Redirect( "/" , 302)
}

 

要求を終了し、例外をスローする方法、ビーゴは、コントローラでこれを行うことができます。

1
2
3
4
5
6
7
8
9
10
11
12
func  (this *MainController) Get() {
     this.Abort( "401" )
     v := this.GetSession( "asta" )
     if  v == nil {
         this.SetSession( "asta" , int(1))
         this.Data[ "Email" ] = 0
     else  {
         this.SetSession( "asta" , v.(int)+1)
         this.Data[ "Email" ] = v.(int)
     }
     this.TplName =  "index.tpl"
}

このような  this.Abort("401") コード以下は実行されませんし、次のようにユーザーに表示されるデフォルトのページになります。

ビーゴのフレームワークのデフォルトの処理サポート401,403,404,500,503これらのタイプのエラー。ユーザーは、例えば404以下のページを再定義し、適切なエラー処理を定義することができます。

1
2
3
4
5
6
7
8
9
10
11
12
//定义处理404错误的函数<br>func page_not_found(rw http.ResponseWriter, r *http.Request){
     t,_:= template.New( "404.html" ).ParseFiles(beego.BConfig.WebConfig.ViewsPath+ "/404.html" )
     data :=make( map [string] interface {})
     data[ "content" ] =  "page not found"
     t.Execute(rw, data)
}
 
func  main() {
     beego.ErrorHandler( "404" ,page_not_found)   //如果是404错误返回什么
     beego.Router( "/" , &controllers.MainController{})   //正常跳转
     beego.Run()
}

私たちは、カスタムエラーページができ  404.html 404エラーを処理するために。

ビーゴより人間的なデザインもあり、エラー処理機能のユーザ定義の文字列型をサポートしていますが

例えば、次のコードは、データベース・エラー・ページを処理するユーザ登録:

1
2
3
4
5
6
7
8
9
10
11
12
func  dbError(rw http.ResponseWriter, r *http.Request){
     t,_:= template.New( "dberror.html" ).ParseFiles(beego.BConfig.WebConfig.ViewsPath+ "/dberror.html" )
     data :=make( map [string] interface {})
     data[ "content" ] =  "database is now down"
     t.Execute(rw, data)
}
 
func  main() {
     beego.ErrorHandler( "dbError" ,dbError)
     beego.Router( "/" , &controllers.MainController{})
     beego.Run()
}

入学登録時にエラー処理コードたら、あなたは、データベース・エラー・コールで任意のロジックに遭遇する可能性が  this.Abort("dbError") 例外ページの処理に。 

 

コントローラの定義されたエラー

1.4.3バージョンから、あなたは組み込みのテンプレート処理システムだけでなく、コンテキストメソッドを利用することができますので、機能エラー処理を定義するためにコントローラエラーの方法をサポートしています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package  controllers
 
import  (
     "github.com/astaxie/beego"
)
 
type  ErrorController  struct  {
     beego.Controller
}
 
func  (c *ErrorController) Error404() {
     c.Data[ "content" ] =  "page not found"
     c.TplName =  "404.tpl"
}
 
func  (c *ErrorController) Error501() {
     c.Data[ "content" ] =  "server error"
     c.TplName =  "501.tpl"
}
 
 
func  (c *ErrorController) ErrorDb() {
     c.Data[ "content" ] =  "database is now down"
     c.TplName =  "dberror.tpl"
}

  

通过上面的例子我们可以看到,所有的函数都是有一定规律的,都是 Error 开头,后面的名字就是我们调用 Abort 的名字,

例如 Error404 函数其实调用对应的就是 Abort("404")。

我们就只要在 beego.Run 之前采用 beego.ErrorController 注册这个错误处理函数就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
package  main
 
import  (
     "btest/routers"
     "btest/controllers"
 
     "github.com/astaxie/beego"
)
 
func  main() {
     beego.ErrorController(&controllers.ErrorController{})
     beego.Run()
}

  

おすすめ

転載: www.cnblogs.com/ExMan/p/11455878.html