当我们刚学python的时候,肯定会被各种报错搞的头晕脑胀,这个时候来认识一下“错误”和“异常”就很关键了。
错误是语法或者是逻辑上的,语法错误是指写的代码结构上的错误,导致不能被解释器解释或者编译器无法编辑,这些错误必须在程序执行前被纠正。当程序的语法正确后,剩下的就是逻辑错误了,逻辑错误可能是由于不完整的或不合法的输入所致;在其他情况下,还可能是逻辑无法生成,计算,或是输出结果需要的过程无法执行,逻辑错误通常又被称为异常。1 常见的异常下面以demo的形式给出一些常见的异常:
#SyntaxError:语法错误a=3print a #python3中必须使用print()SyntaxError: Missing parentheses in call to 'print'#NameError:存在未声明的变量x=3print(x+y)NameError: name 'y' is not defined#ZeroDivisionError:除数为0a=4b=0c=a/bZeroDivisionError: division by zero#TypeError:类型错误a=3b='你好'c=a+bTypeError: unsupported operand type(s) for +: 'int' and 'str'#IndexError:索引错误list1=[1,2,3]list1[5]IndexError: list index out of range#KeyError:请求了一个不存在的字典关键字dic1={'年龄':18,'班级':3}dic1['姓名']KeyError: '姓名'#ndentationError:代码缩进存在错误def f(x): z=x*2 return zf(7)IndentationError: unindent does not match any outer indentation level2 其他的异常随着学习的深入,除了碰到上面那些比较简单的异常,还会有一些复杂的异常,大家要做到看到英文单词知道这是一个什么异常,方便后续处理。SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类StopIteration 迭代器没有更多的值GeneratorExit 生成器(generator)发生异常来通知退出StandardError 所有的内建标准异常的基类ArithmeticError 所有数值计算错误的基类FloatingPointError 浮点计算错误OverflowError 数值运算超出最大限制ZeroDivisionError 除(或取模)零 (所有数据类型)AssertionError 断言语句失败AttributeError 对象没有这个属性EOFError 没有内建输入,到达EOF 标记EnvironmentError 操作系统错误的基类IOError 输入/输出操作失败OSError 操作系统错误WindowsError 系统调用失败ImportError 导入模块/对象失败LookupError 无效数据查询的基类IndexError 序列中没有此索引(index)KeyError 映射中没有这个键MemoryError 内存溢出错误(对于Python 解释器不是致命的)NameError 未声明/初始化对象 (没有属性)UnboundLocalError 访问未初始化的本地变量ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError 一般的运行时错误NotImplementedError 尚未实现的方法SyntaxError Python 语法错误IndentationError 缩进错误TabError Tab 和空格混用SystemError 一般的解释器系统错误TypeError 对类型无效的操作ValueError 传入无效的参数UnicodeError Unicode 相关的错误UnicodeDecodeError Unicode 解码时的错误UnicodeEncodeError Unicode 编码时错误UnicodeTranslateError Unicode 转换时错误Warning 警告的基类DeprecationWarning 关于被弃用的特征的警告FutureWarning 关于构造将来语义会有改变的警告OverflowWarning 旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning 关于特性将会被废弃的警告RuntimeWarning 可疑的运行时行为(runtime behavior)的警告SyntaxWarning 可疑的语法的警告UserWarning 用户代码生成的警告3 异常的检测与处理python出现了异常可以使用try.....except来进行检测,看下面这个例子:#捕获单个异常try: a=3 print(b)except NameError: #如果存在这个异常,就执行下方语句 print('有变量未定义')out:有变量未定义#捕获多个异常try: a=3 c=0 d=c/0 print(d,b)except (NameError,ZeroDivisionError): print('存在异常')out:存在异常#捕获所有异常try: a=3 c=0 d=c/0 print(d,b)except Exception:#使用关键字exception print('存在异常')out:存在异常此外,我们还可以给异常起一个别名,来进行输出,如:
try: a=3 c=0 d=c/0 print(d)except Exception as e: #使用关键字as来起别名 print(e)out:division by zero如果语句中没有异常时,可以在try....except语句后面添加一个else语句,来执行无异常的输出,看下面这个例子:
try: a=3 c=1 d=a/cexcept Exception as e: print(e)else: print('没有异常')out:没有异常在程序上,如果一段代码是否发生异常,后续的代码都要执行,这个时候需要使用try...finally语句,比如关闭文件,关闭数据库连接等命令。
try: file1=open('test.txt','w') print('file is open')except Exception as e: print(e)else: print('没有异常')finally:file1.close #无论结果怎么样,都会执行关闭文件的操作好了,这期的笔记就到这里结束了,感谢你的阅读。

这篇博客介绍了Python中的错误和异常概念,通过示例展示了常见异常类型,并讲解了如何使用try...except进行异常处理,包括给异常起别名、处理无异常情况的else子句以及确保执行的finally子句。适合初学者了解Python异常处理机制。
1391

被折叠的 条评论
为什么被折叠?



