当前位置: 首页 > 知识库问答 >
问题:

“同时使用try-catch和throws进行异常处理”,这是一个好方法吗?

巫马俊力
2023-03-14
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class ExceptionTest {


    public static void main(String[] args) {

        ExceptionTest obj=new ExceptionTest();

        try {
            obj.catchExceptionMethod("test.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    public void catchExceptionMethod(String path) throws FileNotFoundException{
        try {
            BufferedReader br=new BufferedReader(new FileReader(new File(path)));
        }  catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

共有1个答案

秦育
2023-03-14

正如其他人在他们的评论中已经指出的,捕获异常(而不重新抛出它)并在throws子句中声明它是无稽之谈,因为异常永远不会离开您的方法。

大多数时候,捕捉异常是不好的。如果您的方法不能完成它的作业,就抛出一个异常,这样您的调用方法就知道这个步骤失败了,并且可以中止它自己的计算(除了在相关方法的throws子句中声明异常之外,您通常只需对异常不做任何处理就可以得到这个非常有用的行为)。

只有当您知道如何有效地继续执行以前的某个步骤时,才能捕获异常--而通常情况下,您不能这样做,所以只有在顶级操作中使用try-catch时,才能将异常记录到某个日志文件中并通知用户,这通常是您所能做的最好的事情。

有人问,在这种情况下,什么是最高级别的行动?通常,它是一个代码块,用来完成来自程序外部的一些任务。

这取决于应用程序的类型。如果是控制台应用程序,则通常使用main()方法。对于桌面应用程序,顶级操作可能是菜单和按钮操作。如果是某种服务器,它可能是实现来自客户端的某些请求的代码,等等。

通常,您可以这样说:“好吧,[例如,一个打开文件的操作]失败了,但它的成功并不是执行下一件事情[可能是创建一个由用户选择的新文件]所必需的。”

 类似资料:
  • 本文向大家介绍Java异常处理之try...catch...语句的使用进阶,包括了Java异常处理之try...catch...语句的使用进阶的使用技巧和注意事项,需要的朋友参考一下 try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理。最后执行finally之中的代码。无论try中代码有没有异常,也无论catch是否将异常捕获到,finally

  • 本文向大家介绍SQL Server 2005 中使用 Try Catch 处理异常,包括了SQL Server 2005 中使用 Try Catch 处理异常的使用技巧和注意事项,需要的朋友参考一下 TRY...CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 - 包含可能产生异常的

  • 本文向大家介绍multi-catch和try-catch异常处理知识点详解,包括了multi-catch和try-catch异常处理知识点详解的使用技巧和注意事项,需要的朋友参考一下 multi-catch属于JDK1.7之后出现的,举例如下: 如果使用try-catch,会有多个catch块,从里到外是之类异常和父类异常,但是使用了multi-catch之后只需要有一个catch块就可以了,括号

  • C++ 异常处理用于错误检测函数无法处理错误的情况。这种函数抛出异常(throw an exception),但不能保证有相关的异常处理器。如果有,则异常处理器捕获和处理这个异常。如果没有该类异常相关的异常处理器,则程序终止。 程序员在try块中放上出错时产生异常的代码。try块后面是一个或几个catch块。每个catch块指定捕获和处理一种异常,而且每个catch块包含一个异常处理器。如果异常与

  • 问题内容: 可以任你解释的区别是什么之间以及和什么时候使用? 问题答案: :在编写方法时使用,用于声明所讨论的方法引发指定的(已检查)异常。 与检查的异常相反,运行时异常(等)可能会在没有声明方法的情况下引发。 :实际引发异常的指令。(或更具体地说,Throwable)。 关键字后面是对Throwable(通常是异常)的引用。 :必须扩展该类才能创建自己的,自定义的,可抛出的。

  • 如果我为一个抛出一堆异常的函数编写测试用例,我应该在我的测试方法中为这些异常添加一个抛出声明,还是应该捕获每个单独的异常。正确的方法是什么?我相信try-catch是一个更好的方法,但是我应该在catch块中打印stacktrac吗? 例如,我有一个方法,它抛出。如果我编写一个测试用例来检查当参数为null时是否抛出,我该如何处理?我是将其添加到抛出方法的一部分,还是将异常包含在块中。 在上面的测