- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
package java.nio.file;
public final class Files {
/**
* Convert a Closeable to a Runnable by converting checked IOException
* to UncheckedIOException
*/
private static Runnable asUncheckedRunnable(Closeable c) {
return () -> {
try {
c.close();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
};
}
}
rotoeb 22.10.2020 00:09 # +2
guest8 22.10.2020 00:11 # −999
rotoeb 22.10.2020 21:51 # 0
YpaHeLI_ 22.10.2020 21:17 # 0
guest8 22.10.2020 00:11 # −999
CAMypau 22.10.2020 00:23 # 0
guest8 22.10.2020 00:24 # −999
CAMypau 22.10.2020 00:27 # 0
guest8 22.10.2020 00:28 # −999
Fike 22.10.2020 17:16 # 0
там даже в том же Files проверка существования узлов в файловой системе как-то так делается
bormand 22.10.2020 21:25 # 0
Зачем? Зачем? Чтобы закидывать закрывашку в тредпул?
Мистер Хэнки 26.10.2020 11:44 # 0
Fike 26.10.2020 11:49 # 0
Мистер Хэнки 26.10.2020 13:02 # 0
guest8 26.10.2020 14:03 # −999
Fike 26.10.2020 16:15 # +1
если закрывающий хендлер работает с ИО, но ему запрещено кидать ИОЭкцепцен - это хуевый апи.
тем более что можно в любой другой эксепшен напихать suppressed, если мы волнуемся за то, что закрыть его надо потому что операция провалилась из-за какого-то другого исключения
Мистер Хэнки 26.10.2020 16:42 # 0
Мистер Хэнки 26.10.2020 16:45 # 0
Согласен, что это тянется из ванильной джавы и ее ебанутого дизайна исключений, но конкретно этот код не говно
bormand 26.10.2020 16:46 # 0
А всё из-за того, что нарушили SRP и смешали flush и close в одной функции.
Desktop 26.10.2020 16:49 # 0
bormand 26.10.2020 16:51 # 0
Типа программистам удобно что последний кусок автоматически флашится при закрытии, а не проёбывается. А на самом деле кучу гемора создали. Легче было бы flush() звать в успешной ветке, чем думать как же обработать ошибку от close().
guest8 26.10.2020 16:58 # −999
bormand 26.10.2020 17:01 # 0
З.Ы. С другой стороны, я и сам могу позвать flush(), а потом забить на ошибку close(). Но гарантий насчёт этого нету.
guest8 26.10.2020 17:04 # −999
guest8 26.10.2020 16:57 # −999
bormand 26.10.2020 17:10 # 0
bormand 26.10.2020 17:13 # 0
И это реальный залёт на разрушение данных.
Fike 26.10.2020 17:44 # 0
guest8 26.10.2020 14:04 # −999