Dart如何正确检查JSON输入是否为double并实现双重类型校验
问题2:为什么try catch没有捕获到类型错误异常
当你给声明为double类型的参数传入非double值时,异常是在函数调用的参数类型断言阶段抛出的,此时还没有进入函数内部的try代码块,所以try catch自然捕获不到这个异常。
更新需求的适配
你要求所有类型异常都放在calc内部处理、上层不需要加try catch的需求,上述双函数方案已经完全满足:
- 强类型入口
calc()本身就会在编码阶段拦掉大部分类型错误,运行时如果遇到dynamic隐式转double失败的情况,你可以在上层做一层极薄的封装,或者直接统一用calcDynamic()入口,所有异常都会在内部消化返回默认值。
内容的提问来源于stack exchange,提问作者Mr D
相关产品推荐
相关产品推荐

