我有一个关于在 Java 中抛出异常的问题,这似乎是我这边的一种误解,我想自己澄清一下。
我一直在读到处理异常代码的两种基本方法是:
1.) 在 try 块中使用“throw new ...”抛出异常,并立即在 catch 块中捕获它 - 所谓的 try-throw-catch 机制。
2.) 在方法中使用“throw new ...”抛出异常,然后在方法的标头中使用“throws ...”声明该方法可能会抛出异常 - 所谓的“pass-the-buck”。
我最近读到“抛出异常然后用相同的方法捕获它没有任何意义”,这让我思考是否我以错误的方式理解了这件事,或者写这个的人有什么东西其他的在心里。第一种处理异常的方法不正是这样做的吗(try-throw-catch 机制)?我的意思是,它抛出一个异常并用相同的方法捕获它。我读到,在一个方法中抛出异常并在另一种方法中捕获它是一种更好的做法,但这只是一种(可能更好)的方法。另一种方式也是合法、正确的,不是吗?
请您对此发表评论好吗?非常感谢。
当方法无法自行解决异常时,应该从该方法引发异常。
例如,一个FileNotFoundException
被抛出new FileInputStream(new File(filename))
因为FileInputStream本身无法处理文件丢失的情况;需要抛出该异常,以便最终用户应用程序可以处理该问题。
在某些情况下,可以在方法内处理异常。例如,文档模型方法抛出BadLocationException
可以用足够智能的方法来处理。根据问题的不同,可以处理异常或重新引发异常。
(无论如何,我认为从 try-catch 块中抛出异常以便执行 catch 块代表了非常糟糕的逻辑流程)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)