Koa 의 오류 처리
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || 500;
ctx.body = err.message;
ctx.app.emit("error", err, ctx);
}
});
이런 절차 에서 어떤 잘못 도 이곳 으로 수렴 될 것 이다.이 때 오 류 를 페이지 에 편리 하 게 인쇄 할 수 있어 개발 이 편리 하 다.
+ ctx.app.emit('error', err, ctx);
koa 도 app 을 통 해 오 류 를 보 내 고 감청 app 의 error 사건 을 통 해 이러한 오 류 를 더욱 통일 적 으로 처리 하고 집중 적 으로 관리 하 는 것 을 권장 합 니 다.
app.on("error", (err, ctx) => {
/* :
* log
*
*
* ...
*/
});
페이지 에 잘못 캡 처 하고 인쇄 한 예제:
const Koa = require("koa");
const app = new Koa();
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
const status = err.status || 500;
ctx.status = status;
ctx.type = "html";
ctx.body = `
<b>${status}</b> ${err}
`;
// emmit
ctx.app.emit("error", err, ctx);
}
});
app.use(ctx => {
const a = "hello";
a = "hello world!"; // TypeError: Assignment to constant variable.
ctx.body = a;
});
app.on("error", (err, ctx) => {
console.error("Ooops..
", err);
});
app.listen(3000);
node server.js 를 시작 한 후 페이지 를 방문 하면 명령 행 의 오류 출력 을 볼 수 있 습 니 다.pm2 를 사용 하면-no-daemon 인 자 를 통 해 명령 행 에 머 물 러 출력 을 볼 수 있 습 니 다.
상기 인 자 를 사용 하지 않 으 면 pm2 logs[app-name]를 통 해 볼 수 있 습 니 다.
ctx.throw
소박 한 오류 방식 은 수 동 으로 상태 코드 와 정보 가 클 라 이언 트 에 대한 가시 성 을 설정 해 야 한다.
const err = new Error("err msg");
err.status = 401;
err.expose = true;
throw err;
expose 는 클 라 이언 트 에 게 오류 정 보 를 되 돌려 줄 지 여 부 를 결정 합 니 다.그렇지 않 으 면 상태 에 대응 하 는 오류 문안 만 보 여 줍 니 다.예 를 들 어 500 은 브 라 우 저 에서 Internal Server Error 로 보 여 줍 니 다. ctx.throw
이 helper 방법 을 통 해 더욱 간결 해 집 니 다.위의 코드 세 션 은 다음 과 같 습 니 다.
ctx.throw(401, "err msg");
상태 코드 가 지정 되 지 않 으 면 기본 값 은 500 입 니 다.5xx 클래스 오류 expose 는 기본적으로 false 입 니 다.즉,오류 정 보 를 response 로 되 돌려 주지 않 습 니 다.잘못 던 졌 을 때 추가 데 이 터 를 전달 할 수 있 습 니 다.이 데 이 터 는 오류 대상 에 합 쳐 져 오 류 를 처리 하 는 곳 에서 error 에서 가 져 올 수 있 습 니 다.
app.use(ctx => {
ctx.throw(401, "access_denied", { user: { name: "foo" } });
});
app.on("error", (err, ctx) => {
console.error("Ooops..
", err.user);
});
레 퍼 런 스Error Handling
ctx.throw
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Node.js/Koa] Koa 미들웨어익스프레스를 다루며, 미들웨어(Middleware)에 대한 것을 알아봤습니다. 미들웨어는 요청과 응답 중간에서 동작하는 것들을 미들웨어라고 부릅니다. 라우터 등이 대표적이 미들웨어의 일종입니다. Koa 라이브러리도 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.