Tag: exception处理

为什么吞咽InterruptedException确定Thread的子类?

在Brian Goetz 关于如何处理InterruptedException的文章中 ,有一段突出: 当你知道线程即将退出时,吞下一个中断是可以接受的。 只有当调用可中断方法的类是Thread的一部分而不是Runnable时,才会出现这种情况。 我不懂。 是什么原因与Runnable可能由线程池处理,而线程是你自己开始的东西?

在java中打印exception消息

有没有办法在Java中打印exception消息而没有例外? 当我尝试以下代码时: try { // statements } catch (javax.script.ScriptException ex) { System.out.println(ex.getMessage()); } 输出是: Invalid JavaScript code: sun.org.mozilla.javascript.internal.EvaluatorException: missing } after property list () in ; at line number 1 有没有办法打印消息没有exception信息,源和行号信息。 换句话说,我想在输出中打印的消息是: missing } after property list

Java堆内存错误

我收到此错误: Exception in thread “main” java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1585) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1409) at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2886) at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:476) at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2581) at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1757) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2171) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2512) at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1476) at DBase.connect(automateExport.java:31) at automateExport.main(automateExport.java:10) 我尝试通过打开eclipse.ini文件然后更改来增加堆memmory空间 -Xms 256m and -Xmx 512m 但这没有帮助。 我尝试了512m和1024m,但最终给出了错误:无法启动JVM并且eclipse没有打开。 我尝试在cmd行上做同样的事情: java -Xms 256m and -Xmx 512m 还有eclipse -vmargs -Xms 256m and -Xmx 512m但仍然没有帮助。 […]

如何忽略Java中的exception

我有以下代码: TestClass test=new TestClass(); test.setSomething1(0); //could, but probably won’t throw Exception test.setSomething2(0); //could, but probably won’t throw Exception 我想执行: test.setSomething2(0); 即使test.setSomething(0) (它上面的行)抛出exception。 有没有办法做到这一点以外: try{ test.setSomething1(0); }catch(Exception e){ //ignore } try{ test.setSomething2(0); }catch(Exception e){ //ignore } 我有很多test.setSomething连续,所有这些都可以抛出exception。 如果他们这样做,我只想跳过那一行并转到下一行。 为了澄清,我不在乎它是否抛出exception,我无法编辑抛出此exception的代码的源代码。 这是我不关心例外的情况(请不要使用普遍量化的陈述,例如“你永远不应忽视exception”)。 我正在设置一些Object的值。 当我向用户呈现值时,无论如何我都会进行空检查,因此如果执行任何代码行并不重要。

Java:为什么我不能在Comparator中抛出exception?

直接的答案是因为Comparator.compare的接口被指定为不会抛出exception。 但那是为什么呢? 或者说它不同:我的Comparator必须依赖于可以抛出exception的函数。 从理论上讲,这不应该发生。 但如果它发生了,我希望它突破我使用该Comparator的整个函数(在Collections.sort )。 即我希望它只是表现为发生了未处理的exception。 看起来这是不可能以一种明显的自然方式(因为如果接口说它不能抛出exception,它就不能)。 我该如何解决这个问题? 有一个丑陋的尝试/捕获并打印出exception并希望我认识到它? 这似乎是一种非常丑陋的方式。

处理javaexception的最佳实践

我开始学习Java并在java中编写我的第一个实用程序类,它们应该在生产中。 在处理exception时,我有点迷茫。 关于给定代码行中有多少个try语句,是否有一些大概的数字? 应该有多少代码来处理exception.. Eclipse的任何插件? 最佳做法是在try块中包含3-4个语句并捕获exception或在try块中包含10-12行,然后包含2-3个catch语句,捕获不同类型的exception,例如由File相关或由我自己抛出课程或其他一些第三方课程..? 前者对眼睛有点不悦,而且代码太膨胀了…… 这种常见的做法是只围绕try块中的代码,它可以抛出exception,或者可以很好地标记周围的代码以及内部尝试说明如何使用文件句柄等。 任何指针..?

捕获更一般类型的exception是否好?

如果我们要捕获特定forms的IOException ,或事实上任何其他forms,我们只尝试捕捉一对(并为它们定义确定的输出)说 FileNotFoundException ZipException 我们是否应该总是把它用掉,用一个盖住所有的基地 catch(IOException e){ e.printStackTrace(); } 然后可能更进一步捕捉Exception e ,还是完全浪费时间?

java:无法重新抛出exception:未处理的exception类型exception

我想捕获exception,记录它,设置一个标志,并重新抛出相同的exception 我有这个代码: public Boolean doJobWithResult() { boolean result = true; final Feed feed = Feed.findById(feedId); try { feed.fetchContents(); } catch (Exception ex) { result = false; Logger.info(“fetching feed(%d) failed”, feedId); throw ex; } return result; } 但eclipse在throw ex中抱怨,告诉“未处理的exception类型exception”,并建议我在它周围添加一个try-catch块。 实际上,我希望调用此方法的进程能够处理exception,而不是自己处理它……如果一切正常,我只想返回true,如果有exception则记录它 另一方面,我可以将exception包装在另一个exception中,但我不能抛出相同的exception。 任何想法?

用Java扩展Throwable

Java允许您创建一个全新的Throwable子类型,例如: public class FlyingPig extends Throwable { … } 现在, 很少 ,我可能会这样做: throw new FlyingPig(“Oink!”); 当然还有其他地方: try { … } catch (FlyingPig porky) { … } 我的问题是: 这是一个坏主意吗? 如果是这样,为什么? 如果这是一个坏主意,可以做些什么来阻止这种子类型? 由于它不可预防(据我所知),可能导致什么灾难? 如果这不是一个坏主意,为什么不呢? 如果你可以extends Throwable ,你怎么能做出有用的东西呢? 拟议方案#1 我真的想做这样的事情的场景具有以下属性: “事件”最终会发生。 这是预料之中的 。 它绝对不是一个Error ,并且没有什么Exception它何时发生。 因为它是预期的 ,所以会有一个等待它的catch 。 它不会“滑倒”过去。 它不会“逃避”任何catch一般Exception和/或Error尝试。 “事件” 极少发生。 当它发生时,通常会有一个深层堆栈跟踪。 所以也许我现在很清楚我想说的是: FlyingPig是一个详尽的递归搜索的结果 。 要搜索的对象存在:只有在大海中找到它才是搜索空间。 搜索过程很长,因此相对昂贵的exception处理成本可以忽略不计。 […]

Java:Try-Catch-Continue?

假设我可以使用一组语句: try { String a = getProperty(“a”); String b = getProperty(“b”); String c = getProperty(“c”); } catch(Exception e) { } 现在,假设找不到属性b,函数抛出exception。 在这种情况下,我将如何继续或者可能将b设置为null而不必为每个属性编写try-catch块? 我的意思是,a,b,c存在,但有时候可能根本找不到抛出exception的东西。