@20i/exceptions 中文文档教程

发布于 3年前 浏览 31 更新于 3年前

@20i/exceptions

提供要抛出的标准异常。 当我们想添加更多时,我们应该添加到这个简单的库中。

例子: 1)抛出一个错误:

import * as Exception from "@20i/exceptions"

throw Exception.BadRequest("This was a bad request")
// throws { name: "badRequest", code: 400, message: "This was a bad request" }

throw Exception.Unauthorized("You must be logged in to do this")
// throws { name: "unauthorized", code: 401, message: "You must be logged in to do this" }

throw Exception.Forbidden("You do not have permission")
// throws { name: "forbidden", code: 403, message: "You do not have permission" }

throw Exception.NotFound("The record was not found")
// throws { name: "notFound", code: 404, "The record was not found" }

throw Exception.InternalError("Unexpected error")
// throws { name: "internalError", code: 500, "Unexpected error" }

2)抛出多个错误

import * as Exception from "@20i/exceptions"

const exceptions: Exception.IException = {
    name: "multipleErrors",
    code: 400,
    message: [
        Exception.BadRequest("This was a bad request"),
        Exception.Unauthorized("You must be logged in to do this"),
        Exception.Forbidden("You do not have permission"),
        Exception.NotFound("The record was not found"),
        Exception.InternalError("Unexpected error")
    ]
}

// reading the text from exceptions
console.log(Exception.GetErrorMessage(exceptions))
// [
//    "This was a bad request",
//    "You must be logged in to do this",
//    "You do not have permission",
//    "The record was not found",
//    "Unexpected error"
// ]

3)axios示例

import * as Exception from "@20i/exceptions"
import axios, { AxiosResponse } from "axios"

const axiosCall = () => {
    try {
        const response = await axios.get("http://your-url-here.com")
        return response.data
    } catch (e) {
        const res: AxiosResponse = e.response.data
        if (Exception.isException(res)) {
            // print what the message(s)
            Exception.GetErrorMessage(res)
        }
        throw res
    }
}

@20i/exceptions

Provides standard exceptions to throw. We should add to this simple library when we wish to add more.

Examples: 1) Throw one error:

import * as Exception from "@20i/exceptions"

throw Exception.BadRequest("This was a bad request")
// throws { name: "badRequest", code: 400, message: "This was a bad request" }

throw Exception.Unauthorized("You must be logged in to do this")
// throws { name: "unauthorized", code: 401, message: "You must be logged in to do this" }

throw Exception.Forbidden("You do not have permission")
// throws { name: "forbidden", code: 403, message: "You do not have permission" }

throw Exception.NotFound("The record was not found")
// throws { name: "notFound", code: 404, "The record was not found" }

throw Exception.InternalError("Unexpected error")
// throws { name: "internalError", code: 500, "Unexpected error" }

2) Throw multiple errors

import * as Exception from "@20i/exceptions"

const exceptions: Exception.IException = {
    name: "multipleErrors",
    code: 400,
    message: [
        Exception.BadRequest("This was a bad request"),
        Exception.Unauthorized("You must be logged in to do this"),
        Exception.Forbidden("You do not have permission"),
        Exception.NotFound("The record was not found"),
        Exception.InternalError("Unexpected error")
    ]
}

// reading the text from exceptions
console.log(Exception.GetErrorMessage(exceptions))
// [
//    "This was a bad request",
//    "You must be logged in to do this",
//    "You do not have permission",
//    "The record was not found",
//    "Unexpected error"
// ]

3) Axios example

import * as Exception from "@20i/exceptions"
import axios, { AxiosResponse } from "axios"

const axiosCall = () => {
    try {
        const response = await axios.get("http://your-url-here.com")
        return response.data
    } catch (e) {
        const res: AxiosResponse = e.response.data
        if (Exception.isException(res)) {
            // print what the message(s)
            Exception.GetErrorMessage(res)
        }
        throw res
    }
}
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文