在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
。是否有另一种方法来处理特定的异常?
您可以检查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");
}
}