代码之家  ›  专栏  ›  技术社区  ›  Jakov

抛出不同异常的点

  •  0
  • Jakov  · 技术社区  · 4 年前

    try {
        // some code
    } catch(FileNotFoundException e) {
        throw e;
    } catch(Exception e) {
        throw e;
    }
    

    有人能告诉我两个单独的块都抛出异常有什么意义吗?

    try {
        // some code
    } catch(Exception e) {
        throw e;
    }
    
    2 回复  |  直到 4 年前
        1
  •  1
  •   thetechnician94    4 年前

    是和否。有两个不同的 catch 块,这样程序就可以用不同的方法处理不同的错误。此外,通过将代码分为两个块,原始代码将保持由不同方法捕获的原始异常类型。但是,在这种情况下,由于它们都在做相同的事情(重新引发异常),因此 合并成一个 catch(Exception e) 但不建议这样做。在捕获异常时,应该始终尽可能具体。自从 Exception 类是所有异常的父级,包括 FileNotFoundException ,接球几乎总是不好的做法 例外情况 一个人。

        2
  •  1
  •   0xh3xa Neha    4 年前

    假设您从文件系统中读取了一个文件,然后将一些数据保存到数据库中。当您尝试读取文件时,由于找不到文件或没有权限而出现错误。所以你想从日志流中退出,而不是继续保存到数据库中。但是当读取成功时,您检查到数据库的连接,并且连接是正确的。然后转到insert to the table,但是在回滚和记录的SQL的catch中存在与某些重复记录相关的问题。


    try {
        // Read from a file
        // Save to the database
    }catch(IOException e) {
        // log
    }catch(SQLException e) {
       // rollback
       // log
    }finally {
       // close IO resources
       // close SQL resources
    }
    
    
    推荐文章