TypeScript 如何做异常处理

在开发网页或小程序时,你肯定遇到过这样的情况:明明写好的功能,运行到一半突然报错,页面直接卡住,用户看着一片空白,你却不知道问题出在哪。这就是程序里的“异常”——就像你出门没看天气预报,突然遇到暴雨,没带伞只能淋着走。

用TypeScript写代码时,异常处理就像提前准备好雨伞和雨衣,遇到“暴雨”时不会直接淋透,还能及时调整路线。接下来我们就用生活化的例子,一步步搞懂TypeScript里的异常处理到底怎么用。

TypeScript 如何做异常处理

最基础的:try-catch 拦截“突发状况”

假设你写了个函数,用来算用户的月消费:输入“日均消费”乘以“天数”,就能得到总金额。但如果用户不小心填了“abc”这种不是数字的内容,直接运行就会报错,页面直接崩。这时候用try-catch就像给函数加了个“安全门”:

`typescript

function calculateExpense(daily: string, days: number) {

try {

// 尝试执行可能出错的代码

const dailyNum = Number(daily);

if (isNaN(dailyNum)) throw new Error("日均消费必须是数字哦");

return dailyNum * days;

} catch (err) {

// 出错了就走这里,不会影响其他代码

console.log("温馨提示:", (err as Error).message);

return "请输入正确的数字再试";

}

}

`

试一下:如果输入calculateExpense("五十", 30),try里会发现“五十”转不成数字,主动抛出错误,catch就会输出提示,返回友好的文字,页面不会崩。这就是最常用的异常拦截,相当于你出门遇到下雨,撑开伞就不会被淋湿。

进阶:用 throw 主动“抛出问题”

刚才的例子里,我们在函数里主动说了“日均消费必须是数字”,这就是主动抛出异常。很多时候,程序里的错误不是自动出现的,而是需要我们提前判断:比如你要检查用户的年龄,输入负数肯定不对,这时候就用throw把问题抛出去,让外面的代码处理。

比如你写了个买电影票的函数,年龄不能小于0:

`typescript

function buyTicket(age: number) {

if (age < 0) {

// 主动抛出错误,把问题告诉调用的地方

throw new Error("年龄不能是负数哦,是不是输反啦?");

}

return "购票成功";

}

`

如果有人调用buyTicket(-5),直接运行会报错,这时候就要用try-catch包裹这个函数,才能不让程序崩。这就像你出门前检查钱包,发现没带钱,主动说“今天没法出门”,而不是走到半路才说“没带钱回不去了”。

收尾:finally 做“必须完成的事”

有些事情不管有没有出错,都得做完,比如你出门不管有没有下雨,都得把家门锁上。finally就是干这个的,不管try里成功还是catch里出错,finally里的代码一定会执行。

比如你想统计用户的操作次数,不管函数有没有出错,都要把次数加1:

`typescript

let operationCount = 0;

function checkInput(input: string) {

try {

operationCount++; // 先加次数

if (input.length > 10) throw new Error("输入不能超过10个字");

return "输入合法";

} catch (err) {

return (err as Error).message;

} finally {

// 不管有没有错,都把次数再加一次

operationCount++;

}

}

console.log(checkInput("很长很长的输入内容")); // 输出错误提示

console.log(operationCount); // 结果是2:try里加1,finally里再加1

`

这个例子里,不管输入的内容合不合法,operationCount最后都会加2,就像你不管有没有遇到下雨,出门都要锁家门,不会因为下雨就忘了锁门。

实际开发里的小细节

平时做项目时,别把所有代码都塞在一个try-catch里,比如把“计算消费”和“检查年龄”的错误分开处理,这样出问题时能快速找到是哪块的错。另外,抛出错误时尽量说清楚问题,别只写“出错了”,不然排查起来会像大海捞针。

就像你带伞出门,遇到小雨就用小雨伞,遇到大雨就用大雨伞,用try-catch、throw、finally这几个工具,根据不同的异常情况选合适的处理方式,就能让你的程序少出问题,用户体验也会好很多。

上一篇 Swift编程语言的核心特性与应用场景,助力开发者高效构建高性能应用