面试题答案
一键面试- 错误处理方式:
- 在
import()
的链式调用中,可以使用.catch()
方法来捕获动态模块加载过程中可能出现的错误。同时,在模块内部如果有抛出错误的情况,也需要正确处理这些错误,使得错误能够传递到外层调用处。
- 在
- 代码示例:
// 假设我们有一个模块,可能会抛出错误
// moduleWithError.ts
export function throwErrorFunction() {
throw new Error('Module internal error');
}
// 主调用文件
async function loadModule() {
try {
const module = await import('./moduleWithError.ts');
module.throwErrorFunction();
} catch (error) {
if (error instanceof Error) {
console.error('Error loading or using the module:', error.message);
} else {
console.error('Unexpected error:', error);
}
}
}
loadModule();
在上述代码中:
import('./moduleWithError.ts')
尝试动态加载模块。- 如果加载过程中出现模块路径错误等问题,
await import()
会抛出错误,被try - catch
捕获。 - 即使模块成功加载,如果模块内部代码(如
throwErrorFunction
)抛出错误,也会被try - catch
捕获,从而确保程序的健壮性。 另一种使用.catch()
链式调用的方式:
async function loadModule2() {
import('./moduleWithError.ts')
.then(module => {
module.throwErrorFunction();
})
.catch((error) => {
if (error instanceof Error) {
console.error('Error loading or using the module:', error.message);
} else {
console.error('Unexpected error:', error);
}
});
}
loadModule2();
这里使用.then()
处理成功加载模块后的操作,使用.catch()
捕获加载过程和模块内部执行时的错误。