Tag: error handling

在Spring Integration中处理exception时遇到问题

我是Spring集成的新手,对于如何将错误消息发送到指定的错误队列感到困惑。 我希望错误消息是原始消息上的标头,并最终在一个单独的队列中。 我读到这可以通过标头扩充器来完成,我尝试实现但没有出现在错误队列中。 另外,我是否需要一个单独的exception处理类,以便将错误消息发送到错误队列,或者我可以在转换方法中抛出exception? 这是我的xml配置: 错误类: public class ErrorHandler { public String errorHandle(MessageHandlingException exception) { return exception.getMessage(); QualityScorer类(由变换器调用): public class QualityScorer { private Hashtable table; private final static String csvFile = “C:\\Users\\john\\Test.csv”; public QualityScorer() throws Exception { table = new Hashtable(); initializeTable(); } private void initializeTable() throws Exception { BufferedReader br = null; String line […]

Java Try Catch块

我最初开始在大学编程并学习vb.net。 现在我决定转向Java并进行一些查询。 在vb中,try catch语句的布局如下 try Catch ex as exception finally End catch 但是从java网站( https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html )我发现在java中你使用两个类似的捕获: try { } catch (ExceptionType name) { } catch (ExceptionType name) { } 我希望有人可以解释为什么你需要在Java中捕获两次,以及各自捕获的捕获量是多少。 谢谢。

使用“$”,Java进行ANTLRexception处理

对于我在ANTLR中的语法,我的java代码可以捕获并打印包含“$”的输入的错误。 在我的实现中,我需要打印出成功输入的“成功”。 所以,我在我的java代码中执行以下操作, CharStream charStream = new ANTLRFileStream(filePath); myLexer lexer = new myLexer(charStream); TokenStream tokens = new CommonTokenStream(lexer); myParser parser = new myParser(tokens); /*if there is an error throws an exception message*/ parser.program(); /*if there is an error find how many, if 0 then print success,*/ int errorsCount = parser.getNumberOfSyntaxErrors(); if(errorsCount == 0){ System.out.println(“parsing successful”); […]

有没有办法知道在Jersey @__Param fromString处理程序中解析哪个参数?

我正在使用的API已经决定接受UUID作为Base32编码的字符串,而不是UUID.fromString()期望的标准hex,短划线分隔格式。 这意味着我不能简单地将@QueryParam UUID myUuid写为方法参数,因为转换会失败。 我正在通过使用不同的fromString转换器编写自定义对象来解决这个问题,以便与Jersey @QueryString和@FormParam注释一起使用。 我希望能够在fromString方法中访问转换的上下文,以便我可以提供更好的错误消息。 现在,我所能做的就是以下几点: public static Base32UUID fromString(String uuidString) { final UUID uuid = UUIDUtils.fromBase32(uuidString, false); if (null == uuid) { throw new InvalidParametersException(ImmutableList.of(“Invalid uuid: ” + uuidString)); } return new Base32UUID(uuid); } 我希望能够公开哪个参数具有无效的UUID,因此我记录的exception和返回的用户错误非常清楚。 理想情况下,我的转换方法会有一个额外的参数用于细节,如下所示: public static Base32UUID fromString( String uuidString, String parameterName // New parameter? ) { final UUID uuid […]

Spring Boot自定义http错误响应?

如果Spring Boot Web应用程序中发生exception,如何自定义响应状态代码和响应正文中的数据? 我创建了一个Web应用程序,如果由于某些错误的内部状态而发生意外情况,则会引发自定义exception。 因此,触发错误的请求的响应主体看起来像: HTTP/1.1 500 Internal Server Error { “timestamp”: 1412685688268, “status”: 500, “error”: “Internal Server Error”, “exception”: “com.example.CustomException”, “message”: null, “path”: “/example” } 现在,我想更改状态代码并在响应正文中设置字段。 在我脑海中浮现的一个解决方案是: @ControllerAdvice class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody ErrorMessage handleBadCredentials(CustomException e) { return new ErrorMessage(“Bad things happened”); } } @XmlRootElement public class ErrorMessage( private String error; […]

如何保持sysout和syserr流不混合?

在我的代码库中是(非常简化)以下: public static void main (String[] args) { System.out.println(“Starting application”); try { System.out.println(“About to validate”); validate(args); catch (Exception e) { e.printStackTrace(); } } public static void validate(String[] args) { System.out.println(“Your first arg is ” + args[0]); if (someProblemWith(args)) { System.out.println(“Your args are wrong. It should be: …”); throw new BadArgsException(e); } } 哪个工作正常。 请注意,上面的示例代码是设计的,只是为了在exception和堆栈跟踪打印之前显示多个日志语句。 这通常意味着我的上一个日志记录语句在堆栈跟踪输出的中间丢失。 […]

Java输出控制台错误消息到文件?

我有一段简单的代码将控制台文本输出到Java中的文本文件: PrintStream out = new PrintStream(new FileOutputStream(“test2_output.txt”)); System.setOut(out); 但是,我要求此文本文件包含在控制台中生成的错误消息,但不包括它们。 我该怎么做呢?

转义序列无效(有效转义序列为\ b \ t \ n \ f \ r \“\’\\ \)

我正在尝试使用java.util.Scanner将文件读入我的Java程序,当我输入下面的代码时,我得到上面的消息(我是java新手) – 任何人都可以帮忙吗? (我查看了一个用他们自己的代码得到的类似信息,但在我的例子中使用它太复杂了!)。 我有Windows 7。 BufferedReader job = new BufferedReader (new FileReader(“\My Documents\JOBS\newfile.txt”));

Try-catch:这是可接受的做法吗?

我们收到了软件供应商提供的Java代码。 它包含很多try-catch块, catch部分没有任何内容。 他们到处都是。 例: try { spaceBlock.enable(LindsayModel); } catch (Exception e) { } 我的问题是:上述可接受的做法是否合适? 如果是的话,何时? 或者我应该继续删除所有这些“虚假” try和catch语句? 对我而言,这看起来像是一种可怕的做法,但我在Java中没有足够的经验来确定。 如果你不打算对它们做任何事情,为什么要抓错? 在我看来,如果您确信exception绝对没有任何后果,并且您不关心是否发生exception,那么您只会这样做。 但是,在我们的特定应用中并非如此。 编辑提供一些背景信息:我们从供应商那里购买了一个Java脚本产品。 除产品外,他们还根据我们的需求提供了大量的概念validation脚本。 这个脚本“免费”(虽然我们不会购买产品,如果它没有附带脚本),它“工作”。 但是这个脚本是一个真正的痛苦,因为很多东西,即使我作为一个Java新手认为是可怕的做法,一个例子是这个虚假的尝试捕获业务。

防止exception与捕获Java中的exception

我想知道其他SOers在实践中如何处理和/或防止exception。 在什么情况下你会阻止exception,以及如何? 在什么情况下你会捕获exception? 我通常会阻止’NullPointerExceptions’(和其他类似的),好吧,基本上说if(foo!=null) {…} 我发现在大多数情况下,这比使用try-catch块所涉及的所有内容都要小。 当潜在的exception更复杂或更多时,我使用try-catch块。