遇到困难解决困难,没有困难就给自己制造麻烦 -- 论try与expect

异常概述

在程序运行途中,经常会遇到各式各样的错误,这些错误被统称为异常。这类错误大部分都是SyntaxError : invaild syntax(无效的语法)

  • 举例
NameError: name 'sss' is not defined

异常处理语句,使用try...except

try:
    block1
except [ExceptionName[as alias]]:
    block2

block1表示可能出错的程序码区块
ExceptionName[as alias]: 可选参数,用於要指定捕获的异常

  • 举例
def divsion():
    nums = int(input())
    if nums != 0:
        print("num 不等於 0")

if __name__ == '__main__':
    try:
        divsion()
    except ZeroDivisionError:
        print("不是整数")
    except ValueError as e :
        print("输入错误")
# input x
# output 输入错误"
  • 如果需要同时处理多个异常......
# 复制上面的部分
if __name__ == '__main__':
    try:
        divsion()
    except (ValueError, ZeroDivisionError) as e:
        print("Error: ", e)

  • 这样就能印出是出了甚麽问题

异常处理语句,使用try...except...else

  • 在上面的程序码加上
else:
    print("毫无错误")
# number
# num不等於0
# 毫无错误

异常处理语句,使用try...except...finally

  • finally加上後,代表不论发生甚麽状况,都会执行这些程序码
finally:
    print("already")

使用raise语句抛出异常

raise [ExceptionName[(reason)]]
  • 举例,可以修改成......
def divsion():
    nums = int(input())
    if nums >= 0:
        print("num 大於 0")
    if nums == 5:
        raise ValueError("Nope")

# 5
# num 大於 0
# 输入错误 Nope

<<:  Day-11 Excel资料横条及图示标注

>>:  Day.2 「欢迎来到网页这个世界!」 —— 认识网页架构

Day 28 讨论 AI 深度学习论点

大家好~~欢迎来到第二十八篇 聊聊 内轮差论点 本篇呢,会延续上一篇所讲的,我们团队制作了陀螺仪以及...

谈谈Fragment

从Android 3.0(API11) 起,Google 支援Fragment。今天稍微说说什麽是F...

【30】使用混合精度(Mixed precision) 对训练产生的影响

Colab连结 一般我们在做机器学习任务时,在模型里计算的资料型态采用的是 float32 (即占用...

Day 29 - 实战演练 — 元件单元测试

测试会用到的工具是 React Testing Library,後续对元件有改动时也可以使用 Sn...

Day30 最後的拼图 - 音效篇

本篇文章的Unreal engine 4 版本为 4.25.3 今天是这30天的UE旅程的最後一天了...