Tag: exception处理

未捕获并忽略ArrayIndexOutOfBoundsException

我想捕捉并忽略和ArrayIndexOutOfBoundsException错误(基本上它不是我可以控制的东西,所以我需要我的程序继续前进)。 但是我的try / catch对似乎没有捕获exception并忽略它。 希望你能挑出我做错了什么。 此行发生exception content = extractor.getTextFromPage(page); 这是我的代码: for(int page=1;page<=noPages;page++){ try{ System.out.println(page); content = extractor.getTextFromPage(page); } } catch (ArrayIndexOutOfBoundsException e){ System.out.println("This page can't be read"); } } 线程“main”中的exceptionjava.lang.ArrayIndexOutOfBoundsException:来自com的com.lowagie.text.pdf.CMapAwareDocumentFont.decode(未知来源)的com.lowagie.text.pdf.CMapAwareDocumentFont.decodeSingleCID(未知来源)中的索引:02无效.lowagie.text.pdf.parser.PdfContentStreamProcessor.decode(Unknown Source)at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.displayPdfString(Unknown Source)at com.lowagie.text.pdf.parser.PdfContentStreamProcessor $ ShowText.invoke (未知来源)com.lowagie.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(未知来源)com.lowagie.text.pdf.parser上的com.lowagie.text.pdf.parser.PdfContentStreamProcessor.processContent(未知来源) com.pdfextractor.main.Extractor.main上的.pdfTextExtractor.getTextFromPage(未知来源)(Extractor.java:64) 编辑:我已将try / catch放在for循环中 并添加了堆栈跟踪 并删除了index = 1

如何处理从C ++通过SWIG到Java的exception

我们正在实现一个关于C ++代码的包装器,以便接触Java客户端。 我已经看到了关于exception处理的SWIG文档,但这在三层(C ++ / SWIG / Java)中的编码术语中转化了什么? 如果有人有工作实例或建议,我将不胜感激。

抛出UnsupportedOperationException

因此,方法描述之一如下: public BasicLinkedList addToFront(T data)此操作对排序列表无效。 将使用消息“排序列表的无效操作”生成UnsupportedOperationException。 我的代码是这样的: public BasicLinkedList addToFront(T data) { try { throw new UnsupportedOperationException(“Invalid operation for sorted list.”); } catch (java.lang.UnsupportedOperationException e) { System.out.println(“Invalid operation for sorted list.”); } return this; } 这是正确的做法吗? 我只是使用println()打印出消息,但是有不同的方法来生成消息吗?

JUnit 4和Suspend-on-Exception

当我的代码中抛出未捕获的exception时,我习惯让调试器停止在throw语句中,这样我就可以检查局部变量以及抛出exception时所涉及的所有对象的成员。 使用IntelliJ Idea,可以通过转到“运行” ,“ 查看断点” ,选择“ exception断点”选项卡,选中“ 任何exception ”并确保未选中“ 捕获exception”复选框,同时选中“ 未捕获exception”复选框来完成此操作。 使用Eclipse和Visual Studio (对于C#),它是不同的,但是沿着相同的路线。 使调试器以这种方式运行的能力非常有用; 实际上非常有用,我相应地构建了我的程序的主循环:在发布版本中,主循环当然嵌入在try-catch-all中; 但是在调试版本中,主循环中没有try-catch块,因此在程序中任何地方都没有捕获的任何exception都将保持未被捕获状态,因此调试器将在抛出它们时暂停我的程序。 但是,在使用JUnit测试我的Java类时,我遇到了一个问题:调试器不会停止任何exception。 相反,会发生的事情是,不仅预期的,而且意外的exception也会被自动捕获,并且我会获得一个事后exception堆栈跟踪以尝试理解。 那不是很酷。 我曾经认为这种情况正在发生,因为JUnit使用java.lang.reflect.Method.invoke() ,它捕获所有exception并将它们转换为TargetInvocationExceptions ,但后来我编写了自己的自定义JUnit运行器,它知道我的测试类个人直接调用其方法而不使用Method.invoke() ,问题仍然存在。 这意味着问题出现在核心JUnit中。 那么,其他人是否也有同样的问题? 有没有人知道一个解决方案,以便我们可以让调试器在使用JUnit进行测试时暂停程序执行意外exception? 相关(未回答)问题: 在Eclipse Junit测试运行器中暂停未捕获的运行时exception 相关(未答复)的问题: 如何在jUnit测试用例中进入调试器? 相关(部分回答)问题: 使用jUnit打破Eclipse中的exception (接受的答案说“如果你在jUnit中调试单个方法,断点就会开始工作。如果在jUnit中调试整个类或包,调试器不会不行。“)

Java是否默认声明“抛出exception”?

考虑以下课程: class X { public void met() { } } 和 class Y extends X { public void met() throws NullPointerException { throw new NullPointerException(); } } 从我在其他问题上阅读的内容( 为什么不能覆盖方法抛出比重写方法更广泛的exception?和抛出exception的Java方法 ) 我理解子类中的重写方法必须抛出重写方法中抛出的exception的相同或子类。 Java方法总是抛出exception类型的exception吗? …换句话说,编译器添加抛出exception 所以X类看起来像这样 class X { public void met() throws Exception { } } 我想澄清一下,我并没有错误地总是添加默认exception处理程序Exception。 相关问题: IOException与RuntimeException Java

在命名空间(,)中找到多个表 – SchemaExtractionException

尝试在Java应用程序中使用Hibernate将一些值保存到表中时,我一直面临着这个奇怪的exception。 但是,只有一个特定的表/实体才会出现此exception,因为其余的表我可以通过Hibernate执行crud操作。 请在下面找到Stacktrace并告诉我这是否与java代码相关或者是数据库设计错误。 2016-04-28 11:52:34 ERROR XXXXXDao:44 – Failed to create sessionFactory object.org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, ) : YYYYYYY Exception in thread “main” java.lang.ExceptionInInitializerError at com.XX.dao.XXXXXXXDao.main(XXXXXXXXDao.java:45) Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, ) : YYYYYYY at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults(InformationExtractorJdbcDatabaseMetaDataImpl.java:381) at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTable(InformationExtractorJdbcDatabaseMetaDataImpl.java:279) at org.hibernate.tool.schema.internal.exec.ImprovedDatabaseInformationImpl.getTableInformation(ImprovedDatabaseInformationImpl.java:109) at org.hibernate.tool.schema.internal.SchemaMigratorImpl.performMigration(SchemaMigratorImpl.java:252) at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:137) […]

Sonar抱怨记录并重新抛出exception

我在我的程序中有以下代码,我在运行SonarQube 5后,将它与Maven集成后进行代码质量检查。 然而,Sonar抱怨我应该记录或重新抛出此exception 。 我在这里想念的是什么? 我还没有记录exception吗? private boolean authenticate(User user) { boolean validUser = false; int validUserCount = 0; try { DataSource dataSource = (DataSource) getServletContext().getAttribute(“dataSource”); validUserCount = new MasterDao(dataSource).getValidUserCount(user); } catch (SQLException sqle) { LOG.error(“Exception while validating user credentials for user with username: ” + user.getUsername() + ” and pwd:” + user.getPwd()); LOG.error(sqle.getMessage()); } […]

Try-catch-finally执行顺序似乎是随机的

我试图了解try-catch-finally执行流程的工作原理。 Stack Overflow用户有一些关于其执行流程的解决方案。 一个这样的例子是: try { // … some code: A } catch(…) { // … exception code: B } finally { // finally code: C } 代码A将被执行。 如果一切顺利(即在A执行时没有exception被抛出),它将finally进入,因此代码C将被执行。 如果在执行A时抛出exception,则它将转到B然后最终转到C. 但是,当我尝试时,我得到了不同的执行流程: try { int a=4; int b=0; int c=a/b; } catch (Exception ex) { ex.printStackTrace(); } finally { System.out.println(“common”); } 我得到两个不同的输出: 第一输出: java.lang.ArithmeticException: / by […]

是否应将例外情况放在单独的包裹中?

我正在进行一个项目,其中所有exception都放在一个单独的包com.myco.myproj.exceptions 。 这是好习惯吗?

使用Scanner.nextInt()与Scanner.nextLine()进行exception处理

此问题仅用于教育目的。 我从Java教科书中获取了以下代码,我很好奇为什么在catch块中使用了input.nextLine()。 我尝试在其位置使用input.nextInt()编写程序。 该程序将不再适当地捕获exception。 当我传递一个非整数值时,控制台显示熟悉的“线程中的exception…”错误消息。 当我完全删除该行代码时,控制台将无休止地运行catch块的System.out.println()表达式。 Scanner.nextLine()的目的是什么? 为什么这些场景中的每一个都有不同的表现? import java.util.*; public class InputMismatchExceptionDemo { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean continueInput = true; do { try{ System.out.print(“Enter an integer: “); int number = input.nextInt(); System.out.println( “The number entered is ” + number); continueInput = false; } catch (InputMismatchException ex) […]