Is finally block really necessary for the clean up code (like closing streams)?

前端 未结 8 2535
小蘑菇
小蘑菇 2021-02-15 10:09

I am very confused as to why do I need to need to put the clean-up code like closing streams in a finally block.

I\'ve read that the code in finally<

8条回答
  •  渐次进展
    2021-02-15 11:03

    Maybe there is a slight misunderstanding here (or this is myself who misunderstand). The finally block is run whether a method exits on exceptional conditions or not, e.g.

     try {
          throw new Exception();
     }
     finally {
          // Block of code will be called before the method exits as exception is thrown
     }
    

    Note that there is (very) few exception to this rule, as, for instance:

     try {
          System.exit(-1);
     }
     finally {
          // Block of code will be called before the method exits as exception is thrown
     }
    

    This is a (quite dangerous) case where the program will exit without executing the finally block.

提交回复
热议问题