Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Các ngoại lệ chưa được xử lý có thể gây ra sự nhầm lẫn và thất vọng cho người dùng. Tuy nhiên, bạn có thể giải quyết vấn đề này bằng các bộ lọc ngoại lệ.
Bộ lọc ngoại lệ Nest.js mang tới cách chặn và xử lý ngoại lệ trên toàn cầu hoặc trên cơ sở từng bộ điều khiển. Chúng cho phép bạn tập trung vào logic xử lý lỗi, định dạng các phản hồi lỗi và cung cấp xử lý lỗi nhất quán trên ứng dụng. Hãy cùng nhau tìm hiểu về các bộ lọc ngoại lệ và cách dùng chúng để xử lý lỗi ứng dụng phù hợp.
Mặc định, Nest.js có một lớp ngoại lệ, xử lý mọi trường hợp ngoại lệ mà code ứng dụng không xử lý được.
Khi xảy ra lỗi chưa được xử lý trong ứng dụng, Nest.js sẽ phát hiện chúng và trả về báo lỗi 100 Internet Server tới client. JSON mà Nest.js trả về trong trường hợp này trông như sau:
{
"statusCode": 500,
"message": "Internal server error"
}
Nếu đối tượng lỗi phát sinh từ code chứa statusCode và message, Nest.js sẽ trả về những giá trị này thay cho phản hồi mặc định.
Để tránh hành vi chung, gửi một phản hồi lỗi chi tiết hơn tới client, bạn cần chăm chỉ xử lý tất cả các lỗi có thể xảy ra trong ứng dụng. Bạn có thể đạt được điều này bằng bộ lọc ngoại lệ tùy chỉnh hoặc tích hợp sẵn của Nest.js.
Ví dụ này sẽ thử tạo một bộ lọc xử lý tất cả các ngoại lệ HTTP. Bắt đầu với một file tên http.exception.ts và thêm các import sau vào nó:
import {
ExceptionFilter,
Catch,
ArgumentsHost,
HttpException,
} from '@nestjs/common';
import { Request, Response } from 'express';
Những import này phục vụ cho các mục đích sau:
Tiếp theo, tạo một class, HttpExceptionFilter, triển khai ExceptionFilter. Chú thích nó bằng decorator Catch để cho biết rằng nó xử lý HttpExceptions:
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {}
Tiếp theo, điền vào class với code này:
catch(exception: HttpException, host: ArgumentsHost) {
// Lấy đối tượng phản hồi từ máy chủ đối số
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
// ấy đối tượng phản hồi từ máy chủ đối số
const request = ctx.getRequest<Request>();
// Lấy code trạng thái từ ngoại lệ
const status = exception.getStatus();
// Gửi phản hồi JSON bằng đối tượng phản hồi
response.status(status).json({
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
message:
exception.message
|| exception.getResponse()['message']
|| 'Internal Server Error',
});
}
Khối code này truy xuất các đối tượng truy vấn và phản hồi từ đối tượng ArgumentsHost và truy xuất thông tin liên quan từ ngoại lệ này. Nó trả về một phản hồi đối tượng JSON, kèm chi tiết về lỗi tới client.
Bạn có thể liên kết một bộ lọc ngoại lệ với một trình điều khiển hoặc toàn bộ ứng dụng, theo nhu cầu.
Để liên kết một bộ lọc ngoại lệ toàn cục, đầu tiên nhập bộ lọc ngoại lệ vào file main.ts. Sau đó, chuyển phiên bản của bộ lọc ngoại lệ vào phương thức app.useGlobalFilters:
// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { HttpExceptionFilter } from './exception/http.exception';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// Liên kết bộ lọc với ứng dụng
app.useGlobalFilters(new HttpExceptionFilter());
await app.listen(4050);
}
bootstrap();
Để liên kết một ngoại lệ với bộ điều khiển, nhập decorator UseFilters và bộ lọc ngoại lệ của bạn. Ghi chú thích class controller với decorator @UseFilters và chuyển phiên bản của bộ lọc ngoại lệ dưới dạng đối số cho decorator:
@Controller()
@UseFilters(new HttpExceptionFilter())
export class AppController {}
Vị trí bạn liên kết bộ lọc sẽ quyết định phạm vi xử lý lỗi. Bộ lọc liên kết với bộ điều khiển sẽ chỉ phục vụ cho bộ điều khiển mà bạn liên kết tới, bộ lọc liên kết ứng dụng sẽ dành cho toàn bộ ứng dụng.
Trên đây là cách dùng bộ lọc ngoại lệ của Nest.js để xử lý lỗi. Hi vọng bài viết hữu ích với các bạn.
Nguồn tin: Quantrimang.com
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Hướng dẫn chỉnh sửa ảnh ChatGPT trên Canva
Cách tạo các slide trình bày dữ liệu hiệu quả bằng AI
Quy trình phê duyệt và sự kiểm soát của con người trong agent flow
Cách tạo các slide trình bày dữ liệu hiệu quả bằng AI
Google tích hợp AI Agent trải nghiệm tìm kiếm web: Cách hoạt động và sử dụng
Cách dùng AI Overviews trong Google Search
Mẹo bỏ qua phần trả lời AI trên Google chỉ với 3 ký tự
TOP lựa chọn thay thế GPT-Live-1 cho giọng nói AI
Tính năng Dự Án trong ChatGPT là gì? Hướng dẫn sử dụng từ A đến Z
Bộ công cụ tạo bài thuyết trình bằng AI
TOP ứng dụng Claude AI có thể tạo mà không cần viết code
AI tích hợp bảng tính: Gemini trong Sheets và Copilot trong Excel
Xây dựng Copilot Studio agent flow đầu tiên trong 15 phút
API Key là gì?
Hướng dẫn tạo báo cáo tương tác trên NotebookLM
Tại sao nên dùng AI để tạo bài thuyết trình?
Cách dùng Perplexity làm trợ lý mua sắm cá nhân
Gmail Live: Tìm và quản lý email bằng giọng nói
TOP nguồn prompt ChatGPT chất lượng và đa dạng
Cách gợi ý lịch hẹn bằng Gemini trong Gmail
Cách lập trình chuyên nghiệp hơn, dễ dàng hơn với tính năng Tệp trên Grok
Hướng dẫn cài đặt và sử dụng n8n trên Windows 11
Công thức tính diện tích hình Elip
Hướng dẫn ngắt kết nối ứng dụng trên ChatGPT
Hướng dẫn tạo đoạn hội thoại cho topic trên Twee
8 ứng dụng Microsoft Store miễn phí giúp Windows tốt hơ
Bức tranh tổng quan về hỗ trợ khách hàng tích hợp AI
Đừng chia sẻ ảnh cho đến khi bạn chạy kiểm tra siêu dữ liệu này!
6 cách mở Computer/System Properties trong Windows 10
Cách sửa lỗi There Are Currently No Power Options Available Windows