我在使用 TypeScript 中的自定义错误类时遇到问题,其中修改后的错误消息无法正确显示,我只是收到从 API 调用返回的错误消息。 我的自定义错误类--
export class CustomError extends Error {
cod:string;
constructor(cod:string , message: string){
super(message);
this.cod = cod;
Object.setPrototypeOf(this , new.target.prototype);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
}
继承的类--
import { CustomError } from "./CustomError";
export class CityNotFoundError extends CustomError {
constructor(cod:string , message: string){
const errMsg:string = message + " :The city you provided was not found,Please verify"
super(cod,errMsg);
}
}
错误处理函数。
import { CityNotFoundError } from "../Errors/CityNotFoundError";
export function ErrorHandler(cod: string , message: string){
switch(cod){
case '404':
const errMsg:string = message + " :The city you provided was not found,Please verify"
return new CityNotFoundError(cod,errMsg);
}
}
这就是功能
app.get('/',async (req:Request,res:Response) =>{
await fetch(`https://api.openweathermap.org/data/2.5/weather?q={location}&&appid={API_KEY}`).
then(async(response) =>{
const data = await response.json();
console.log(data)
res.json(data);
}).
catch(async(err) =>{
const error = ErrorHandler(err.cod , err.message)!;
console.error(error.stack);
res.status(500).json({
code: error.cod,
message: error.message,
});
})
})
我收到此错误 { cod: '404', message: '未找到城市' } 但我想要这个.. { cod: '404', message: '未找到城市: :未找到您提供的城市,请验证' }
什么可能导致错误消息未按预期修改的问题?如何确保我在 CityNotFoundError 构造函数中添加的附加上下文在记录时包含在错误消息中?
我发现了这个问题,我只需检查响应 json 是否有不成功的响应,然后抛出错误。
fetch(`https://api.openweathermap.org/data/2.5/weather?q={Location}&&appid={API_KEY}`).
then(async(response) =>{
if(!response.ok){
const errData = await response.json();
console.log(errData)
throw ErrorHandler(errData.cod,errData.message);
}
const data = await response.json();
res.json(output);