【发布时间】:2023-01-20 04:14:02
【问题描述】:
我有一个简单的设置,我从控制器调用服务方法,如下所示:
// companies.controller.ts
@Controller("company")
export class CompaniesController {
constructor(private companiesService: CompaniesService) {}
@Post("/:id/upload")
@UseInterceptors(FilesInterceptor("file"))
uploadFiles(
@Param("id") id: string,
@UploadedFiles() files: Array<Express.Multer.File>,
) {
// throw new HttpException("Company not found", HttpStatus.NOT_ACCEPTABLE);
// console.log(files);
try {
this.companiesService.uploadFiles(id, files);
console.log("didn't get error");
} catch (error) {
console.log("got error");
throw new HttpException("forbidden", HttpStatus.FORBIDDEN);
}
}
}
// companies.service.ts
@Injectable()
export class CompaniesService {
constructor(
private prisma: PrismaService,
private s3Service: S3Service,
private filesService: FilesService,
) {}
async uploadFiles(id: Company["id"], files: Array<Express.Multer.File>) {
const company = false // for testing
if (!company) {
console.log("Company not found");
throw new Error();
}
}
我使用 nest start --watch 运行它。
当我调用此端点时,我的应用程序退出并且我将以下内容记录到我的控制台:
didn't get error
Company not found
/src/companies/companies.service.ts:54
throw new Error();
^
Error:
at CompaniesService.uploadFiles (/src/companies/companies.service.ts:54:13)
为什么我无法捕获我在控制器中抛出的错误?它显然不是catching,因为它正在记录company not found。异常过滤应该是默认内置的,所以我不确定为什么这不产生500?
【问题讨论】:
标签: nestjs