在代码中声明函数但未调用时会出现恐慌

上下文:https : //github.com/fusspawn/tserver/blob/master/app/controllers/gorp.go


作为尝试进行 gorm 设置的一部分,我尝试转换标准 revel/gorp 示例。


然而。即使定义了 Begin()、Commit()、Rollback() 方法也足以引起恐慌。


   TRACE 2015/09/06 17:37:47 harness.go:126: Rebuild                                                                                                  

   INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir tmp                                                                                           

   INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir routes                                                                                        

   INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir tmp                                                                                           

   INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir routes                                                                                        

   TRACE 2015/09/06 17:37:47 build.go:151: Exec: [/usr/bin/git --git-   dir=/home/fusspawn/go/src/github.com/fusspawn/tserver/.git describe --always --   dirty]                                                                                                                                               

   TRACE 2015/09/06 17:37:47 build.go:94: Exec: [/usr/bin/go build -ldflags    -X github.com/fusspawn/tserver/app.APP_VERSION "git-2588ef1" -tags  -o /ho

  me/fusspawn/go/bin/revel.d/github.com/fusspawn/tserver/tserver   github.com/fusspawn/tserver/app/tmp]                                                

   TRACE 2015/09/06 17:39:14 app.go:56: Exec app:   /home/fusspawn/go/bin/revel.d/github.com/fusspawn/tserver/tserver    [/home/fusspawn/go/bin/revel.d/git

   hub.com/fusspawn/tserver/tserver -port=46276 -  importPath=github.com/fusspawn/tserver -runMode=dev]                                                 


注释掉方法定义将停止恐慌。我似乎无法理解如何不调用这些方法(注意 revel.InterceptMethod 调用被注释掉)会使恐慌发生:/


holdtom
浏览 184回答 1
1回答

富国沪深

根据 Revel 文档,系统通过扫描您的源目录以查找任何匿名嵌入*Revel.Controller. 您看到的错误是由于 Revel 在此控制器扫描初始化期间进行动态反射并搞砸了。所以现在的问题是:为什么它在扫描控制器时遇到问题?您的代码似乎试图扩展EventStream 中的控制器,Revel 调试控制器发现代码将尝试将其作为控制器读取。但是,目前的代码通过嵌入 a*GormController而不是GormController;目前违反了框架的预期。请参阅控制器文档的最后一部分。我认为控制器发现逻辑只是因为这个而窒息。修复EventStream结构定义。如果这确实为您解决了问题,您可能应该向 Revel 人员发送错误报告,因为您返回的错误消息非常糟糕且非本地,因为它没有提到它的名称尝试在失败时注册为控制器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go