我有一个关于在Java中抛出异常的问题,这似乎是我自己的一种误解,我想为自己澄清一下.
我一直在阅读处理异常代码的两种基本方法是:
1.)在一个带有"throw new ..."的try-block中抛出异常,然后立即在catch-block中捕获它 - 即所谓的try-throw-catch机制.
2.)在一个带有"throw new ..."的方法中抛出一个异常,然后在方法的标题中声明这个方法可能会抛出一个带有"throws ..."的异常 - 即所谓的pass-the-buck.
我最近读到过"抛出一个异常然后用相同的方法捕获它没有任何意义",这让我想到我是否以错误的方式理解了这个东西,或者写了这个东西的人有什么东西别的想法.处理异常的第一种方法不是这样(try-throw-catch机制)吗?我的意思是,它抛出异常并以相同的方法捕获它.我已经读过,在一个方法中抛出异常并在另一个方法中捕获它是一种更好的做法,但这只是一种(可能更好)的方法.另一种方式也是合法和正确的,不是吗?
请你对此发表评论吗?非常感谢你.
当该方法无法自行解决异常时,应该从方法抛出异常.
例如,FileNotFoundException
抛出a 是因为FileInputStream本身无法处理文件丢失的情况; 该异常需要抛出,以便最终用户应用程序可以处理该问题.new FileInputStream(new File(filename))
在某些情况下,可以在方法中处理异常.例如,抛出a的Document模型方法BadLocationException
可以在足够智能的方法中处理.根据问题,可以处理或重新抛出异常.
(无论如何,我认为在try-catch块中抛出异常以便执行catch块表示非常糟糕的逻辑流程)
我想你误解了第一个案子.通常,在调用可能引发异常的方法时,添加try-catch-block.捕获本地抛出的异常确实没有多大意义.特别是你不应该使用异常来退出循环,因为与标准方法相比,这是非常慢的.