Python初学(13)错误和异常处理

Python初学(13)错误和异常处理,第1张

在程序的编写和运行过程中不可避免地会产生错误和异常,Python语言采用结构化的异常处理机制捕获和处理异常。


一.程序的错误

Python程序的错误通常可以分为3种类型,即语法错误运行时错误逻辑错误


1.语法错误

语法错误是指源代码中的拼写语法错误,这些错误导致编译器无法将源代码转换为字节码,故也称编译错误。


出现语法错误时,编译器显示SyntaxError错误信息。


import random

print("Good Luck!"
print("Today your lucky number is: ",random.choice(range(10)))

错误出现在第四行,因为第三行没有右括号,所以编译器发现错误。


2.运行时错误

运行时错误是指程序解释执行过程中产生的错误。


例如,没有导入相关程序,解释器会抛出NameErro错误;如果有零除运算,解释器抛出ZeroDivisionError错误信息;如果程序试图打开不存在的文件,解释器抛出FileNotFound错误信息。


#未导入random模块
print("Hello!")
print("Today is ",random.choice(range(7)))

 3.逻辑错误

逻辑错误程序可以执行,但结果错误。


import math
a=1;b=2;c=1
#错误公式
x1=-b+math.sqrt(b*b-4*a*c)/2*a
x2=-b-math.sqrt(b*b-4*a*c)/2*a
print(x1,x2)
#正确公式
x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)
x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)
print(x1,x2)

 二.异常处理 1.异常处理概述

Python语言采用结构化的异常处理机制


在执行过程中,发生错误抛出异常;可通过try语句来定义代码块,以运行可能抛出异常的代码;通过expect语句可以不或特定的异常并执行相应的处理;

else语句执行无异常时的处理;通过finally语句可以保证即时发生异常,也可以事后清理资源。


用Python的结构化异常处理机制,其伪代码一般为:

try:
    可能发生异常的语句
expect Exception1:   #捕获异常Exception1
    发生异常执行的语句
expect Exception2:   #捕获异常Exception2
    发生异常执行的语句
expect:               #捕获其他异常
    发生异常执行的语句
else:                 #无异常
    无异常执行的语句
finally:
    无论发生异常与否都保证执行的语句

将错误处理和正常代码分开,更加高效的处理错误。


示例:

try:
    f=open("testfile0txt","w")
    f.write("这是一个测试文件!")
    f1=open("textfile1.txt","r")  #报错:没有找到文件或读取文件失败
except IOError:
    print("没有找到文件或读取失败!")
else:
    print("文件写入成功!")
finally:
    f.close()
2.内置的异常类

常见的异常示例:

(1)NameError:尝试访问一个未声明的变量
>>>noname      #报错.NameError: name 'noname' is not defined
(2)SyntaxError:语法错误
>>>int a       #报错.SyntaxError: invalid syntax
(3)AttributeError:访问位置对象属性。


>>>a=1 >>>a.show() #报错.AttributeError: 'int' object has no attribute 'show' (4)TypeError:类型错误 >>>11+'abc' #报错.TypeError: unsupported operand type(s) for +: 'int' and 'str' (5)ValueError:数值错误 >>>int('abc') #报错.ValueError: invalid literal for int() with base 10: 'abc' (6)ZeroDivisionErrorL:零除错误 >>>1/0 #报错.ZeroDivisionError: division by zero (7)IndexError:索引超出范围 >>>a=[10,11,12] >>>a[3] #报错.IndexError: list index out of range (8)KeyError:字典关键字不存在 >>>m={'1':'yes','2':'no'} >>>m['3'] #报错.KeyError: '3'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568534.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存