Quero usar a std::filesystem::remove()
função para remover um arquivo, e dar um erro se o arquivo não existir. Algo assim:
std::error_code errorCode;
if (!std::filesystem::remove("<some file path>", errorCode))
{
std::cout << "Could not delete file because " << errorCode.message();
}
Entretanto, se o arquivo não existir, isso gerará a mensagem Could not delete file because unknown error
.
Minha pergunta é: por que isso não me diz que o arquivo não existe?
Eu interpreto a documentação em cppreference para dizer que
- A
error_code
versão não daremove
função retornafalse
se o arquivo não existe e gera uma exceção em outros erros. - A
error_code
versão retorna false em qualquer erro e armazena o motivo noerror_code
. Ela nunca lança uma exceção.
Dado que o código de erro apenas diz "erro desconhecido" quando um arquivo não existe, parece que esta versão dá menos informações do que a não- error_code
1? Ou talvez eu esteja entendendo algo errado?
Estou no Windows 11, usando o Visual Studio 2022 versão 17.11.2.