- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
try
{
await storageClient.DownloadObjectAsync(Bucket, fileName, stream).ConfigureAwait(false);
}
catch(Exception ex)
{
throw new FileStorageException($"File '{fileName}' not found in a bucket '{Bucket}'", ex) { StatusCode = StatusCodes.Status404NotFound };
}
Евреев туда не пустят.
А вот ловля «Exception ex» — это говно, да.
Писать в лог нужно далеко не всегда, важен коньтекст. Если этот код — из либы для работы с какой-то сетевой ФС, то выбрасывания подробного, семантически верного, исключения вполне достаточно, либе совершенно не обязательно срать в лог, это оверинжиниринг. В лог писать должен тот код, который этот самый FileStorageException поймает.
>>> в эксепшене создается еще один эксепшн
нет.
https://ideone.com/zXstg3
Сейчас так модно делать.
ex тоже в camel case
а StatusCode в pascal case.
Это у шарперов норм?
Впрочем, это же Visual BRACIS...
Зачем? Зачем? Чем они от переменных отличаются?
Для приватных строгого соглашения нет, и вот их как правило пишут со строчной, как обычную переменную; некоторые ещё андерскор впереди добавляют.
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions
Неужели у storageClient нет метода "проверить наличие файла"?
Судя по https://googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Storage.V1/api/Google.Cloud.Storage.V1.StorageClient.ht ml — именно такого нет, разве что GetObject().
Впрочем, он и не нужен: в распределённых приложениях паттерн «проверить наличие, потом использовать» — априори говно.
Если эта хуйня упакована в storageClient, можно было бы создавать какой-нибудь StorageClientInstance, который бы под капотом делал один запрос, но поддерживал бы оба метода, храня в себе состояние этого запроса. Разве получилось бы хуево?