Eglusaxie 2021-07-25 22:10 采纳率: 100%
浏览 39
已结题

python3异常是否都能不进行except,即通过编译

在java中,异常分为两类,一种是运行时异常,不受编译检查,另一种是除运行时异常外的其他异常,受编译检查,要求可能抛出这类异常的地方必须使用try处理或抛出处理,这很好理解,因为有些异常程序无法处理,因为运行时的意外情况,而有些异常是可以被预料到发生并且处理的,也就要求程序员必须对这类异常进行处理,就像返回值一样,这种异常是预料中的反馈
而在我学习python的过程中没有发现python的异常有这种分类,这是否表示,python中的所有异常,都被视为不能处理的异常,还是说,需要程序员去文档里check代码中可能出现的异常,再针对性的处理?有没有什么办法,能像java中一样,让调用者知晓代码可能抛出的异常,将异常作为一种函数调用的可预料的反馈,而不是我调用了一个函数,这个函数在某种情况下会抛出异常,然后除非在代码真正运行起来并且发生了这个情况抛出这个异常之后,我才去写try代码块,我总不可能在调用每个函数的时候,都去文档里check一下这个函数可能抛出的异常,如果是这样的话,那python中异常处理岂不是很鸡肋,因为不管什么异常对于调用方而言都一样,按这样不就变成每次都是except所有异常,然后finnally就ok?
那这样还调用方还try什么呢?try的意思就是知道可能会出问题才try,完全不知道会出什么异常,也就是哪里都有可能出异常,那不是所有代码都得try
我觉得python应该不至于有我以为的该缺陷,是否有什么我不知道的语法,可以解决这个问题

  • 写回答

1条回答 默认 最新

  • vigiles 2021-07-26 00:49
    关注

    java是”编译型语言“,python是解释型语言。java在编译阶段可以检测你写的代码是否有错误,对常规的流、网络、等现实中通常会有意外的操作直接要求你try。运行阶段,你的代码基本没问题了,但用户操作可能就出问题,此时的问题是你业务决定的,不是某个具体操作决定的。比如除数为0,这个0是用户决定的。这种情况只能靠程序员想到,手动的try。
    python的“解释阶段”就是运行阶段,无论是流、网络、还是除数为0,别无二致,你代码里不try,执行时遇上异常了就会崩 。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月3日
  • 已采纳回答 7月26日
  • 修改了问题 7月25日
  • 修改了问题 7月25日
  • 展开全部

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?