Tag: exception处理

在catch子句中抛出exception

我有两段代码: class PreciseRethrow { public static void main(String[] str) { try { foo(); } catch (NumberFormatException ife) { System.out.println(ife); } } static private void foo() throws NumberFormatException { try { int i = Integer.parseInt(“ten”); } catch (Exception e) { throw e; } } } 并且: class PreciseRethrow { public static void main(String[] str) { try […]

Javareflection和检查exception

我有一个方法,我想通过反思来调用。 该方法对其参数进行了一些不同的检查,并且可以抛出NullPointer和IllegalArgumentexception。 通过Reflection调用方法也会抛出需要捕获的IllegalArgument和NullPointerexception。 有没有办法确定exception是由reflectionInvoke方法还是由方法本身引起的?

如何避免java中的许多try catch块

我是java的新手,并尝试使用catch catch来处理exception。 这大致是我最终的结果,而且必须有一个更好的方法: try { JSONObject jsonObject = new JSONObject(jsonString); int aCount = jsonObject.getInt(“acount”); String devTok = jsonObject.getString(“dt”); String qURL = jsonObject.getString(“qu”); try { DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Key qKey = KeyFactory.createKey(“qu”, qURL); int dsACount = (Integer) datastore.get(qKey).getProperty(kLastKnownANumber); //..etc.. more try catch blocks needed } catch (EntityNotFoundException e) { e.printStackTrace(); } } catch (com.google.appengine.repackaged.org.json.JSONException e) […]

JVM如何知道在运行时捕获exception的位置?

根据我的理解, throw是一个灵长类似的jvm命令。 调用它时,JVM“检查当前调用堆栈是否可以捕获它”。 如果它不能,那么java只是简单地弹出调用栈,就像调用一个返回一样。 然后jvm“检查当前调用堆栈是否可以捕获它”等等递归。 我的问题:JVM在算法上如何知道调用堆栈中哪些地方可以捕获给定的exception? 每个调用堆栈条目中是否存储了元数据,将exception映射到代码块? 堆中是否有一个静态数据结构以某种方式跟踪它? 因为某处必须有数据跟踪。

是否吞噬了UncaughtExceptionHandler中抛出的错误?

Thread.UncaughtExceptionHandler声明当处理未捕获的exception的方法本身抛出exception时,该exception将被忽略: void uncaughtException (Thread t,Throwable e): 当给定线程由于给定的未捕获exception而终止时调用的方法。 Java虚拟机将忽略此方法抛出的任何exception。 但是当我测试它时,JVM没有忽略未捕获的exception处理程序处理的exception: public static void main(final String args[]) { Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread arg0, Throwable arg1) { throw new java.lang.RuntimeException(“e2”); } }); throw new RuntimeException(“e1”); } Eclipse控制台输出(JRE 1.7): exception:从线程“main”中的UncaughtExceptionHandler抛出java.lang.RuntimeException 我发现的另一个奇怪的是我得到的输出不是来自System.err 。 它似乎完全来自另一个流。 我通过将System.err重定向到System.out来validation这一点,但我仍然得到“红色”输出: public static void main(final String[] args) { System.setErr(System.out); System.out.println(System.err == System.out); System.err.println(“this […]

FileNotFoundException与NoSuchFileException

我注意到另一个Javaexception表明该文件不存在 – NoSuchFileException 。 我的任务是重构一个api,它从不同的方法抛出这两个,我只想使用一个。 我应该将NoSuchFileException映射到FileNotFoundException吗? 我应该使用NoSuchFileException而不是FileNotFoudnException因为它更具体吗? 编辑:更新了问题。 我在发布此问题之前阅读了文档并了解了基本的区别。 我希望在这种情况下获得更多信息和指导,因为类型的exception处理对于服务api的客户端很重要,我想避免在需要对两种exception类型进行检查时的情况。

JAX-WS Soap错误没有出现在WSDL中

我正在使用JAX-WS创建一个Web服务(我使用Java到WSDL方法创建它)。 我无法按照我的要求让我的例外工作。 我创建了以下exception类: @WebFault public class MyWebServiceException extends SOAPFaultException { private static final long serialVersionUID = 8234753208722614057L; protected MyWebServiceException(SOAPFault fault) { super(fault); } protected MyWebServiceException(SOAPFault fault, Throwable throwable) { this(fault); super.setStackTrace(throwable.getStackTrace()); } } 这允许我在SOAP响应中包含以下内容: E0010 Invalid Report Invalid Report 但是,因为我的exception是扩展RuntimeException的SOAPFaultException ,所以它没有被添加到WSDL中,因此当服务的用户生成其客户端存根时,不包括exception。 有谁知道如何创建此exception以给我预期的输出(即包括faultcode和faultstring),但也出现在WSDL中(我想它需要是一个经过检查的exception) 我搜索了高低,想出了我已经拥有的东西!

java.net.BindException:已在使用的地址:JVM_Bind :80

我在启动Tomcat服务器时遇到绑定exception。 当一些进程正在使用它时,我试图杀死使用’80’的进程。 获取错误,同时查杀进程ID为’0’: 错误:无法终止PID 0的进程。 原因:这是关键的系统过程。 Taskkill无法结束此过程。 如何解决这个问题? 我不需要使用另一个端口来运行tomcat服务器。

什么是来自.net的java等效的AggregateException?

在.net中,AggregateException类允许您抛出包含多个exception的exception。 例如,如果并行运行多个任务,并且其中一些任务因exception而失败,则您希望抛出AggregateException。 java有一个等价的类吗? 具体案例我想用它: public static void runMultipleThenJoin(Runnable… jobs) { final List errors = new Vector(); try { //create exception-handling thread jobs for each job List threads = new ArrayList(); for (final Runnable job : jobs) threads.add(new Thread(new Runnable() {public void run() { try { job.run(); } catch (Exception ex) { errors.add(ex); } }})); //start […]

我应该在函数中抛出IllegalArgumentException吗?

我正在构建一个包含大量计算的科学软件,当然参数可能有错误的长度等…所以我使用了IllegalArgumentException类,因为它似乎是问题的正确名称,但是我应该在函数定义中throws IllegalArgumentException吗? 我问这个是因为在我写完之后,Eclipse编辑器没有让我用try和catch来包围这个函数。 我认为这是强制执行尝试和捕获的方式。 我已经阅读了Java.com上的exception处理教程,但我不确定我是否理解了有关我的问题的部分。