сгенерировать ошибку и использовать, наконец, блок отправляет код ошибки 500 - PullRequest
0 голосов
/ 10 декабря 2018

Я использую throwExecption, когда файл не указан в запросе, и в конце своей функции я использую блок finally, чтобы отсоединить файл.

Так что я file неуказал, что я должен получить код 400 с сообщением об ошибке.

Но из-за finally блок throw Execption переопределяется им

try {
  if (!file) {
    throw new BadRequestException('no file');
  } 
}
...
finally {
  // On error or not : delete temporary file
    await fse.unlink(file.path); // error 500 because Cannot read property 'path' of undefined
}

Я нашел обходной путь, если проверить файл вfinally блок, но это делает код избыточным.

try {
  if (!file) {
    throw new BadRequestException('no file');
  } 
}
...
finally {
  // On error or not : delete temporary file
  if (file) {
    await fse.unlink(file.path);
  } else {
    throw new BadRequestException('no file'); <== redundancy
  }
}

Есть ли другой способ обработки этого случая ошибки?

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете переместить , если блок вне блока try / catch

if (!file) {
  try {
    ...your block of code
  }
  ...
  finally {
    // On error or not : delete temporary file
    await fse.unlink(file.path);
  }

} else {
  throw new BadRequestException('no file'); <= = redundancy
}
...