Tag: error handling

Mainactivity.java中的错误

我有以下代码,我找不到摆脱这些错误的方法: 类型View中的方法setOnClickListener(View.OnClickListener)不适用于参数(MainActivity) 这适用于包含以下内容的第17,18,19,20,21,22,23,24,25行: findViewById(R.id.imageButton9).setOnClickListener(this); 在第31行(创建新类的行)中,我得到: 嵌套类型MainActivity无法隐藏封闭类型 这是我正在使用的代码: package com.example.rome; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.EditText; import android.widget.Button; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.imageButton1).setOnClickListener(this); findViewById(R.id.imageButton2).setOnClickListener(this); findViewById(R.id.imageButton3).setOnClickListener(this); findViewById(R.id.imageButton4).setOnClickListener(this); findViewById(R.id.imageButton5).setOnClickListener(this); findViewById(R.id.imageButton6).setOnClickListener(this); findViewById(R.id.imageButton7).setOnClickListener(this); findViewById(R.id.imageButton8).setOnClickListener(this); findViewById(R.id.imageButton9).setOnClickListener(this); } class MainActivity extends Activity implements View.OnClickListener { @Override […]

ANTLR4 Lexer错误报告(违规字符长度)

我正在使用ANTLR4为某种语言开发一个小型IDE,并且当词法分析器无法匹配时需要强调错误的字符。 在这种情况下,内置的org.antlr.v4.runtime.ANTLRErrorListener实现会向stderr输出一条消息,类似于: line 35:25 token recognition error at: ‘foo\n’ 我没有问题理解如何获取有关错误的行和列的信息(作为参数传递给syntaxError回调),但如何在回调中获取’foo\n’字符串? 当解析器是错误的来源时,它会将违规令牌作为syntaxError回调的第二个参数传递,因此提取有关错误输入的开始和停止偏移的信息变得微不足道,这也在参考书中进行了解释。 但是当源是词法分析器时呢? 在这种情况下,回调中的第二个参数为null,大概是因为词法分析器无法形成令牌。 我需要不匹配字符的长度才能知道要强调多少,但在调试我的监听器实现时,我无法在提供的回调参数中的任何地方找到此信息(除了通过字符串操作从提供的错误消息中提取它,这只是错误)。 ‘foo\n’字符串显然可以以某种方式获得,所以我错过了什么? 我怀疑我可能正在寻找错误的地方,我应该考虑扩展DefaultErrorStrategy ,在那里形成错误消息。

捕获ANTLR中的错误并找到父级

我发现在解析期间我可以通过覆盖displayRecognitionError来捕获错误,但是如何找到此错误的父“节点”? 恩。 如果我有语法:prog:stat expr; stat:STRING; expr:INTEGER; 并给它输入“abc def”。 然后我将在“def”处得到一个错误,它应该是一个整数。 此时我想获得“expr”的父级(因为它在INTEGER部分内失败)并且它是父级“prog”。 有点像在java中打印堆栈跟踪。 我试图从IdentificationException中查找解析为displayRecognitionError的节点,但它是null,并且使用CommonErrorNode时父节点为null。 我应该采取完全不同的方法吗?

Struts 2当用户插入不存在的动作时该怎么做

在Struts 2应用程序中,当用户插入与您的任何操作无关的URL时,会出现java.lang.NullPointerException 在这些情况下,我想显示一个漂亮的屏幕,所以我已经添加到我的struts.xml /WEB-INF/jsp/exception.jsp 但它不起作用。 我也尝试过没有成功 /WEB-INF/jsp/exception.jsp 所以,我开始认为所有的URL都必须与一个动作对应,否则当用户插入与任何动作不对应的URL时,没有机制来处理这些情况(所以这个机制是处理由NullpointerException引起的您现有的一个动作,而不是一个不存在的动作。

自定义Jerseyerror handling,如何在客户端捕获响应?

我正在尝试在我的webservice上进行一些自定义error handling。 在我的webservice中,我创建了一个自定义的Exception类,扩展了WebApplicationException,如JAX-RS / Jersey中所描述的, 如何自定义error handling? : public class InternalServerErrorException extends WebApplicationException { public InternalServerErrorException(String message) { super(Response.status(Response.Status.INTERNAL_SERVER_ERROR) .header(“errorMessage”, message).type(MediaType.TEXT_PLAIN).build()); System.out.println(message); } } 为了测试,我有一个简单的国家/地区服务,它提供了一个国家列表。 我确保测试抛出InternalServerErrorException会发生错误: @GET @Override @Path(“countries”) @Produces({“application/xml”}) public List findAll() { try { int i = Integer.parseInt(“moo”); //<– generate error List countries = super.findAll(); return countries; } catch (Exception ex) { throw […]

Java库将HTTP状态代码映射到描述?

我正处于为webapp编写自定义错误页面的情况(主要是为了减少servlet容器的默认错误页面中的信息泄露)。 由于每个错误状态代码都需要一个错误页面,因此我必须对每个代码都有一个明智的响应。 据我所知,这些错误页面不一定非常用户友好,但只是将所有内容重定向到单个“它出错”错误页面将使诊断问题变得非常困难。 所以我想知道是否有一个Java库可以提供HTTP状态代码和简短的人类可读描述之间的良好映射(理想情况下是一个2-4字的“摘要”,用作页面标题,以及在摘要中扩展的1-3句话消息)。 然后我可以在JSP中使用它来提供有关错误类的一些反馈。 如果不是,我敢肯定我自己可以写一个,但如果发明了轮子,我很乐意使用它们。

为什么ScheduledExecutorService在抛出exception后不再运行任务?

为了执行定期任务,我查看了Timer和ScheduledThreadPoolExecutor (使用单个线程)并决定使用后者,因为在reference for Executors.newSingleThreadScheduledExecutor()的reference for Executors.newSingleThreadScheduledExecutor() ,它说: 但请注意,如果此单个线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新线程。 我的计划是使用它作为一个保护措施,以防止我希望监视其他操作的监视程序代码中未被捕获的exception。 我想确认并编写下面的测试,该测试很快就失败了。 看来我做错了假设,或者我的测试出了什么问题? 这是代码: @Test public void testTimer() { final AtomicInteger cTries = new AtomicInteger(0); final AtomicInteger cSuccesses = new AtomicInteger(0); TimerTask task = new TimerTask() { @Override public void run() { cTries.incrementAndGet(); if (true) { throw new RuntimeException(); } cSuccesses.incrementAndGet(); } }; /* Timer t = […]

如何在ANTLR4中实现error handling

我有以下语法来解析应用于图形的一阶逻辑公式: grammar Graph; /*—————————————————————— * PARSER RULES *——————————————————————*/ input : formula EOF ; formula : TRUE | FALSE | formula AND formula | formula OR formula | quantifier formula | ST condition ; condition : atom EQUALS QUOTE? (assignment | atom) QUOTE? ; quantifier : (FOREACH | EXISTS) variable IN domain ; domain : (GRAPH_A […]

Antlr处理exception

我使用AST树使用Antlr 3开发了一个复杂的语法。 ANTLR生成Lexer和Parser。 问题是当用户输入例如无效的语法时,语法期望’;’。 用户没有输入,然后在我的Eclipse IDE中我得到以下exception: line 1:24 mismatched input ” expecting ‘;’ 如何处理此exception,因为我试图捕获此exception,但是没有捕获exception。 这是一个例外吗? 我似乎不明白为什么没有抓到这个exception。 我试图找出答案,但Antlr网站现在似乎已经停止了一段时间。 我查看了以下内容: 使用“$”和Java进行ANTLRexception处理并遵循该示例,但是当Lexer通过添加RuntimeException()生成代码时,我得到了无法访问的代码。 我不知道该怎么做。 当我尝试从解析器中获取语法错误的数量时,它显示0。 编辑: 我找到了一个解决方案,通过查看: ANTLR不会在无效输入上抛出错误 但是,当我尝试获取Exception消息时,它为null。 我是否正确设置了一切? 请参阅示例语法: grammar i; options { output=AST; } @header { package com.data; } @rulecatch { catch(RecognitionException e) { throw e; } } // by having these below it makes no […]

如何外部化错误消息

这是外部化错误消息的最佳实践问题。 我正在开发一个项目,我们在代码,简短描述和严重性方面存在错误。 我想知道将这些描述外化的最佳方法是什么。 我想到的是将它们放在不好的代码中,将它们存储在数据库中,将它们放在属性文件中,或者将静态类加载到描述中。 我想我会选择属性,但也许有更好的方法。 谢谢