为什么像C#和Java这样的高级语言不会强制执行文件关闭?

Sai*_*ood 0 c# java

大多数时候,学生会获得基于控制台的管理系统分配,即图书馆或销售点系统等.他们必须使用传统的文件系统存储他们的数据.

80-90%的时间他们错误地忘记在打开或创建文件后关闭文件.

someFile.close();
Run Code Online (Sandbox Code Playgroud)

(他们必须调试所有代码才能找到任何错误,为什么他们的数据没有存储在文件中.作为导师,我自己也经常遇到过这个问题.)

所以真实的是,这些高级语言尤其是Java强制执行异常处理的方式为什么没有任何东西可以强制执行文件关闭?

The*_*kis 7

资源在被解除分配时被释放(通过垃圾收集,预计不会是确定性的).如果你想以确定的方式处理它们(而不是在它们解除分配时),在Java中有try-with-resources块,在C#中有using块.

为什么不对包含可自动分解/可处置资源的所有类型强制执行此操作?好吧,仅仅因为这种模式仅在某些用例中是好的.如果他们强制执行,那么在所有其他情况下都会很麻烦.

  • 假设程序员知道他们在做什么,总是更好.+1. (3认同)