Grails src/groovy类中的错误处理
作为grails应用程序的一部分,我实现了一个简单的自然语言解析器,以实现一个命令行界面,用户可以在其中输入命令,如“创建新用户”,应用程序将执行此任务等。我创建了以下文件:Grails src/groovy类中的错误处理,grails,error-handling,Grails,Error Handling,作为grails应用程序的一部分,我实现了一个简单的自然语言解析器,以实现一个命令行界面,用户可以在其中输入命令,如“创建新用户”,应用程序将执行此任务等。我创建了以下文件: Tokenizer.groovy PartOfSpeechTagger.groovy SyntacticAnalyser.groovy SemanticAnalyser.groovy CommandGenerator.groovy 它们被放置在src/groovy 在我的控制器中有一个run()方法,该方法实例化这些解析
Tokenizer.groovy
PartOfSpeechTagger.groovy
SyntacticAnalyser.groovy
SemanticAnalyser.groovy
CommandGenerator.groovy
它们被放置在src/groovy
在我的控制器中有一个run()
方法,该方法实例化这些解析器类并调用这些对象中的方法,如下所示:
def run()
{
def tokenizer = new Tokenizer()
def posTagger = new PartOfSpeechTagger()
def syntacticAnalyser = new SyntacticAnalyser()
def semanticAnalyser = new SemanticAnalyser()
def commandGenerator = new CommandGenerator()
//split command string into tokens
def words = tokenizer.getTokens(params.command)
def taggedWords = posTagger.tagWords(words)
... and so on
}
我的问题是,我希望能够将这些解析器类中出现的错误消息发送回客户机,例如,如果发现无效的令牌
,则在Tokenizer
中
对于我来说,处理这些错误并将其发送回broswer的最佳方法是什么
我以前没有这种级别的错误处理经验,因此欢迎任何输入
起初我想抛出一个自定义的InvalidTokenException
,并在控制器中捕获它,然后将文本呈现给客户端,但这似乎不对
有什么想法吗?您可以
将自定义异常抛出到控制器并使用渲染
//You can use whichever contentType you need, here I have mentioned json
render (status: HttpStatus.NOT_FOUND.value(), contentType: "application/json" text: exception.getMessage())
还有一点我想我应该分享。您在src/groovy
中添加的所有解析器实用程序类都很好,但最后您将看到n
每个类的实例数,用于n
来自控制器的调用数。例如,来自控制器的单个调用将最终创建5(Tokenizer,speechtager的一部分,syntacticalyser,SemanticAnalyser,
CommandGenerator
)实用程序类的总实例
要优化上述实现,可以为每个实用程序提供服务
类。由于service
类默认为Singleton
。每个服务器只创建一个实例。因此,在整个应用程序中,您将得到5个实用程序服务实例
或者将实用程序类显式设置为单例
这只是一个您可能感兴趣的想法。是的,这很有帮助,谢谢,我想这不存在并发问题吗?不,只要您在方法内部的局部范围内处理事情。在服务中使用global scope并不是我想要分享的建议。