Python札记43_错误与异常

阿里云2000元红包!本站用户参与享受九折优惠!

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

错误与异常

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

当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
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论