try...catch
是 JavaScript 中用于异常处理的关键字,它的基本用法是尝试执行可能会抛出异常的代码块,如果有异常被抛出,就会进入 catch
块来处理异常。以下是一些 try...catch
使用的小技巧:
多重 catch
块:
try {
// 可能会抛出异常的代码
} catch (error) {
if (error instanceof TypeError) {
// 处理类型错误
} else if (error instanceof RangeError) {
// 处理范围错误
} else {
// 处理其他错误
}
}
使用多重 catch
块可以根据不同类型的异常执行不同的处理逻辑。
finally
块:
try {
// 可能会抛出异常的代码
} catch (error) {
// 处理异常
} finally {
// 无论是否发生异常都会执行的代码
}
finally
块中的代码在 try
块中的代码执行完毕后总是会被执行,无论是否发生异常。
捕获异步异常:
async function fetchData() {
try {
const response = await fetch('https://example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
在异步函数中使用 try...catch
可以捕获异步操作中的异常。
自定义错误对象:
class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}
try {
throw new CustomError('This is a custom error');
} catch (error) {
if (error instanceof CustomError) {
console.error('Caught custom error:', error.message);
} else {
console.error('Caught other error:', error.message);
}
}
自定义错误对象可以帮助你更好地识别和处理特定类型的异常。
throw
语句:
try {
if (someCondition) {
throw new Error('This is an error');
}
// 其他代码
} catch (error) {
console.error('Caught error:', error.message);
}
使用 throw
语句主动抛出异常,以便在 catch
块中进行处理。
全局错误处理:
window.onerror = function (message, source, lineno, colno, error) {
console.error('Global error handler:', message, source, lineno, colno, error);
};
在全局设置错误处理器,可以捕获整个应用中未被处理的异常。
这些小技巧可以帮助你更灵活地使用 try...catch
进行异常处理,提高代码的健壮性和可维护性。
原文链接:codingdict.net