express-try-catch
v1.0.1
Published
A tiny utility package that makes Express route handlers cleaner by providing:
Maintainers
Readme
Express Utils
A tiny utility package that makes Express route handlers cleaner by providing:
TryCatch– Automatically catches async errors and sends JSON responses.SErr– A simple custom error class for returning HTTP status codes.
Installation
npm install express-try-catchFeatures
- No repetitive
try...catchblocks - Simple custom HTTP errors
- Automatic JSON error responses
- Request logging after every request
Usage
Basic Example
Instead of writing this:
app.get("/users/:id", async (req, res) => {
try {
const user = await db.users.findById(req.params.id);
if (!user) {
return res.status(404).json({
error: "User not found",
});
}
res.json(user);
} catch (err) {
res.status(500).json({
error: "Internal Server Error",
});
}
});You can simply write:
import { TryCatch, SErr } from "express-try-catch";
app.get(
"/users/:id",
TryCatch(async (req, res) => {
const user = await db.users.findById(req.params.id);
if (!user) {
throw new SErr("User not found", 404);
}
res.json(user);
}),
);Throwing Custom Errors
Use SErr whenever you want to return a specific HTTP status.
throw new SErr("Unauthorized", 401);throw new SErr("Forbidden", 403);throw new SErr("User not found", 404);throw new SErr("Validation failed", 400);If any other error is thrown, a 500 Internal Server Error response is returned automatically.
Returned Error Format
Errors are returned as JSON:
{
"error": "User not found"
}Logging
After every request, a log is printed in the following format:
[GET] /users/1 - 200 OKExample:
[POST] /login - 401 UnauthorizedAPI
TryCatch(handler)
Wraps an async Express route handler.
Parameters
TryCatch(
handler: (
req: Request,
res: Response,
next: NextFunction
) => Promise<unknown>
)Example
app.post(
"/login",
TryCatch(async (req, res) => {
const user = await authenticate(req.body);
if (!user) {
throw new SErr("Invalid credentials", 401);
}
res.json(user);
}),
);SErr
A custom error class with an HTTP status code.
Constructor
new SErr(message, status);Parameters
| Parameter | Type | Description |
| --------- | -------- | ---------------- |
| message | string | Error message |
| status | number | HTTP status code |
Example:
throw new SErr("Email already exists", 409);Example
import express from "express";
import { TryCatch, SErr } from "express-try-catch";
const app = express();
app.get(
"/hello",
TryCatch(async (req, res) => {
res.json({
message: "Hello World",
});
}),
);
app.get(
"/error",
TryCatch(async () => {
throw new SErr("Something went wrong", 400);
}),
);
app.listen(3000);