如何捕获 JavaScript 中的特定异常?

问题描述 投票:0回答:1

在Python中,你可以像这样捕获特定的异常:

try:
    [1, 2, 3][4]
except IndexError:
    print("index is out of range")

如何在 JavaScript 中实现同样的效果?我试过这个:

class NegativeIntegerError extends Error {
    constructor(message: string) {
        super(message)
        this.message = message
    }
}
class NegativeRangeNotSupportedError extends Error {
    constructor(message: string) {
        super(message)
        this.message = message
    }
}
export function range(start: number, stop: number, step: number = 1): number[] {
    if (start < 0 || stop < 0 || step < 0) {
        throw new NegativeRangeNotSupportedError("Negative range start, stop, or step is not supported for now. Please use a positive range.")
    }
    let res: number[] = []
    for (let index: number = start; index <= stop; index += step) {
        res.push(index)
    }
    return res
}
export function getDivisors(number: number): number[] {
    try {
        return range(1, number).filter((element) => (number % element == 0))
    } catch (message: any | unknown) {
         if (message.includes("error TS119: Expression Expected."))
            throw new NegativeIntegerError("Could not get divisors of a negative number.")
         else
            console.log("there is nothing to cause an error what")
    }
}

但我收到错误消息

"message.includes" is not a function
。是否有另一种方法来处理特定的异常?

typescript
1个回答
-1
投票

您可以检查instanceof错误。

类似:

    try {
    // Code that might throw an exception
    throw new Error("Something went wrong");
} catch (error) {
    if (error instanceof Error) {
        // Handle specific error types
        console.log("Error occurred:", error.message);
    } else {
        // Catch all other types of errors
        console.log("Unknown error occurred");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.