Python 异常处理,python异常处理,Python异常Py
Python 异常处理,python异常处理,Python异常Py
Python异常
Python3的捕获异常语法
try: # 未声明的变量 print(x)except Exception as e: print(e)
Python常见异常和错误
NameError:尝试访问一个未申明的变量print(v)NameError: name 'v' is not definedZeroDivisionError:除数为0
print(1/0)ZeroDivisionError: int division or modulo by zeroSyntaxError:语法错误
print(,)File "test.py", line 201 print(,) ^SyntaxError: invalid syntaxIndexError:索引超出范围
List = [2]print(List[3])Traceback (most recent call last): File "<pyshell#18>", line 1, in <module> List[3]IndexError: list index out of rangeKeyError:字典关键字不存在
Dic = {'1':'yes', '2':'no'}print(Dic['3'])Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> Dic['3']KeyError: '3'IOError:输入输出错误
f = open('abc')IOError: [Errno 2] No such file or directory: 'abc'AttributeError:访问未知对象属性
class Worker: def Work(): print("I am working")w = Worker()w.aTraceback (most recent call last): File "<pyshell#51>", line 1, in <module> w.aAttributeError: 'Worker' object has no attribute 'a'ValueError:数值错误
int('d')Traceback (most recent call last): File "<pyshell#54>", line 1, in <module> int('d')ValueError: invalid literal for int() with base 10: 'd'TypeError:类型错误
iStr = '22'iVal = 22obj = iStr + iVal;Traceback (most recent call last): File "<pyshell#68>", line 1, in <module> obj = iStr + iVal;TypeError: Can't convert 'int' object to str implicitly
Python异常处理基本原则
(1)执行try子句(在关键字try和关键字except之间的语句)
(2)如果没有异常发生,忽略except子句,try子句执行后结束。
(3)如果在执行try子句的过程中发生了异常,那么try子句剩下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
try: print(x)# 产生的异常类型和捕获的异常类型相符except NameError as e: print(1) print(e)
(4)如果异常没有与任何except匹配,那么这个异常将会传递给上层的try中。
try: try: print(x) # 产生的异常和捕获异常的类型不符,则异常传递给上层try except IndexError as e: print(1) print(e)except Exception as ee: print(2) print(ee)
(5)一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
try: print(x)except IndexError as e1: print(1) print(e1)except NameError as e2: print(2) print(e2)
(6)一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。
try: print(x)except (IndexError, NameError) as e: print(e)
(7)最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息。
try: print(x)except: print('您遇到了错误')
(8)try except语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。
try: print(x)except: print('您遇到了错误')else: print('前面没有发生任何错误')
(9)异常处理并不仅仅处理那些直接发生在try子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。
def this_fails(): x = 1 / 0try: this_fails()except ZeroDivisionError as err: print('0不能作为除数', err)
(10)try……finally 语句,无论是否发生异常,都会执行finally块的代码
try: print(11)except: passfinally: print('hh')
抛出异常(主动触发异常)
之所以我们能捕获异常,那是因为代码执行的时候,系统给我们抛出了异常。其实我们也可以手动自行抛出异常。
def xx(): raise Exception('错误', 1111)try: xx()except Exception as e: print(e)
Python 异常处理
相关内容
- What exactly can you do with Python? Here are Python’s 3 main appli
- python学习笔记,,python变量名里
- Python(八) —— 异常(概念、捕获、传递、抛出),
- Ubuntu-18.04Python2与Python3自由切换,,阅读目录(Conte
- python使用和注意,python使用,错误:1.Your
- Python安装,,一、linux下源码
- Python之路(一):初识,python之路初识,Python基础介绍
- Python基础(二)之数据类型和运算(2)——字符串,
- Python错误和异常,,github博客传送
- python基础,,变量变化的状态/特征
评论关闭