Python札记43_错误与异常

Python publisher01 30℃ 0评论

在程序执行的过程中因为错误或者其他原因而导致中止的行为,都归纳为“错误和异常”。

错误与异常

  • 错误
    • 语法错误
    • 逻辑错误

当Python解释器检测到错误,程序无法继续执行,就会抛出异常,查看Traceback(回溯),常见的异常有:

异常 描述
NameError 变量没有声明
ZeroDivisonError 除数是0
SyntaxError 语法错误
IndexError 索引超出序列范围
KeysError 字典中的键不存在
IOError 输入输出错误,比如文件不存在
AttributeError 尝试访问位置对象的属性

处理异常

  • 单个异常
while 1:   # 条件一直为真
    print("this is a divison program.")
    c = input("please input 'c',otherwise logout:")   # input输入的是字符串
    if c == "c":  
        a = input("first number")
        b = input("second number")
        try:
            print(float(a) / float(b))
            print("*****************")
        except ZeroDivisionError:  #抛出除数是0的错误
            print("the secon number can`t be zero")
            print("*****************")
    else:  # 如果不满足if条件,退出程序
        break

结果:

this is a divison program.
please input 'c',otherwise logout:c
first number4
second number2
2.0
*****************
this is a divison program.
please input 'c',otherwise logout:c
first number5
second number0
the secon number can`t be zero
*****************
this is a divison program.
please input 'c',otherwise logout:a  # 退出程序

解释

  • 关注try…..except…..语句
  • try如果正常,执行里面的语句
  • try如果异常,跳到except中执行后面的错误和子句

多个异常

捕获不同的异常,通过多个except进行处理

while 1:
    print("this is a divison program.")
    c = input("please input 'c',otherwise logout:")
    if c == "c":
        a = input("first number")
        b = input("second number")
        try:
            print(float(a) / float(b))
            print("*****************")
        except ZeroDivisionError:
            print("the secon number can`t be zero")
            print("*****************")
        
         # 增加部分:捕获输入非数字异常
        except ValueError:    
            print("please input number.")  
    else:
        break

结果

this is a divison program.
please input 'c',otherwise logout:c
first number:4    # 正常运行
second number:2
2.0
*****************
this is a divison program.
please input 'c',otherwise logout:c
first number:5
second number:hello  # 输入非数字,报错
please input number.   # 捕获异常
*****************
this is a divison program.
please input 'c',otherwise logout:a   # 输入不是c,直接退出

你或许想:《去原作者写文章的地方

转载请注明:Python量化投资 » Python札记43_错误与异常

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址