// 定义网络错误类型
class NetworkError extends Error {
constructor(message: string) {
super(message);
this.name = 'NetworkError';
}
}
// 定义数据格式错误类型
class DataFormatError extends Error {
constructor(message: string) {
super(message);
this.name = 'DataFormatError';
}
}
// 模拟异步操作,可能抛出网络错误
async function fetchData(): Promise<string> {
// 这里简单模拟网络错误
if (Math.random() > 0.5) {
throw new NetworkError('Network connection failed');
}
return '{"key": "value"}';
}
// 模拟数据解析操作,可能抛出数据格式错误
function parseData(data: string): { key: string } {
try {
return JSON.parse(data) as { key: string };
} catch (error) {
throw new DataFormatError('Data format is incorrect');
}
}
// 主函数
async function processData(): Promise<{ key: string }> {
try {
const fetchedData = await fetchData();
return parseData(fetchedData);
} catch (error) {
if (error instanceof NetworkError) {
console.error('Network error occurred:', error.message);
throw error;
} else if (error instanceof DataFormatError) {
console.error('Data format error occurred:', error.message);
throw error;
} else {
console.error('Unexpected error occurred:', error);
throw error;
}
}
}
// 测试
processData().then(result => {
console.log('Processed result:', result);
}).catch(error => {
console.error('Error in processing:', error);
});