在java中,异常分为两类,一种是运行时异常,不受编译检查,另一种是除运行时异常外的其他异常,受编译检查,要求可能抛出这类异常的地方必须使用try处理或抛出处理,这很好理解,因为有些异常程序无法处理,因为运行时的意外情况,而有些异常是可以被预料到发生并且处理的,也就要求程序员必须对这类异常进行处理,就像返回值一样,这种异常是预料中的反馈
而在我学习python的过程中没有发现python的异常有这种分类,这是否表示,python中的所有异常,都被视为不能处理的异常,还是说,需要程序员去文档里check代码中可能出现的异常,再针对性的处理?有没有什么办法,能像java中一样,让调用者知晓代码可能抛出的异常,将异常作为一种函数调用的可预料的反馈,而不是我调用了一个函数,这个函数在某种情况下会抛出异常,然后除非在代码真正运行起来并且发生了这个情况抛出这个异常之后,我才去写try代码块,我总不可能在调用每个函数的时候,都去文档里check一下这个函数可能抛出的异常,如果是这样的话,那python中异常处理岂不是很鸡肋,因为不管什么异常对于调用方而言都一样,按这样不就变成每次都是except所有异常,然后finnally就ok?
那这样还调用方还try什么呢?try的意思就是知道可能会出问题才try,完全不知道会出什么异常,也就是哪里都有可能出异常,那不是所有代码都得try
我觉得python应该不至于有我以为的该缺陷,是否有什么我不知道的语法,可以解决这个问题
python3异常是否都能不进行except,即通过编译
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- vigiles 2021-07-26 00:49关注
java是”编译型语言“,python是解释型语言。java在编译阶段可以检测你写的代码是否有错误,对常规的流、网络、等现实中通常会有意外的操作直接要求你try。运行阶段,你的代码基本没问题了,但用户操作可能就出问题,此时的问题是你业务决定的,不是某个具体操作决定的。比如除数为0,这个0是用户决定的。这种情况只能靠程序员想到,手动的try。
python的“解释阶段”就是运行阶段,无论是流、网络、还是除数为0,别无二致,你代码里不try,执行时遇上异常了就会崩 。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 MATLAB代码补全插值
- ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
- ¥15 前后端分离的学习疑问?
- ¥15 stata实证代码答疑
- ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
- ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
- ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
- ¥15 husky+kinova jaco2 仿真
- ¥15 zigbee终端设备入网失败
- ¥15 金融监管系统怎么对7+4机构进行监管的