Python_16异常处理

一、异常处理基本概念
异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序的运行期间,干扰了正常的指令流程。
一般情况下,在Python无法处理程序时就会发生一个异常,异常是Python的对象,表示一个错误,当python脚本发生异常时,我们就需要捕获处理它,否则程序会终止执行。
在Python中,所有的异常类都是基类Exception的成员。所有异常都从基类Exception继承,而且都是在exceptions模块中定义。python自动将所有的异常名称放在内建的命名空间中,所以程序不必导入Exception模块即可使用异常。
捕获异常可以使用try/except语句,try/except语句用来监测try语句快中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。

 

1、try/except
异常捕捉可以使用 try/except 语句。

 1 #异常处理概念及基本使用2022.08.17PM23:15
 2 try:
 3     num1 = input('请输入num1:  \n')
 4     num2 = input('请输入num2:  \n')
 5     s = int(num1)+int(num2)
 6     print('和为:'+str(s))
 7 except ValueError as e:   #Python3系列中 e= ValueError()
 8     print('error:输入非法,原因是:'+str(e))
 9 
10 print('hello')

2、try/except...else

try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。
else 子句将在 try 子句没有发生任何异常的时候执行。

 1 #异常处理概念及基本使用2022.08.17PM23:15
 2 try:
 3     num1 = input('请输入num1:  \n')
 4     num2 = input('请输入num2:  \n')
 5     s = int(num1)+int(num2)
 6     print('和为:'+str(s))
 7     lista = [1,2,3,4]
 8     print(lista[3])
 9 except ValueError as e:   #Python3系列中 e= ValueError()
10     print('error:输入非法,原因是:'+str(e))
11 except IndexError as e:
12     print('error:列表访问异常,原因是:'+str(e))
13 except Exception as e:    #如果无法定位原因,可是使用Exception,因为它是所有异常类的父类,但一般把Exception放在最后
14     print('error:系统异常')
15 else:
16     print('代码不报错就执行')
17 
28 print('hello')

3、try-finally 语句
无论是否发生异常都将执行最后的代码

 1 #异常处理概念及基本使用2022.08.17PM23:15
 2 try:
 3     num1 = input('请输入num1:  \n')
 4     num2 = input('请输入num2:  \n')
 5     s = int(num1)+int(num2)
 6     print('和为:'+str(s))
 7     lista = [1,2,3,4]
 8     print(lista[3])
 9 except ValueError as e:   #Python3系列中 e= ValueError()
10     print('error:输入非法,原因是:'+str(e))
11 except IndexError as e:
12     print('error:列表访问异常,原因是:'+str(e))
13 except Exception as e:    #如果无法定位原因,可是使用Exception,因为它是所有异常类的父类,但一般把Exception放在最后
14     print('error:系统异常')
15 else:
16     print('代码不报错就执行')
17 finally:
18     print('我一直执行')     #不管报不报错一直执行
19 
20 print('hello')

4、raise自定义异常
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Excetion类,通过直接或间接继承的方式。自定义异常使用raise语句引发,而且只能通过人工方式触发。

 1 #自定义异常,至此Python基本语法全部学完
 2 class LoginError(Exception):
 3     def __init__(self,name,password):
 4         self.name = name
 5         self.password = password
 6 try:
 7     userName = input('请输入用户名:\n')
 8     passWord = input('请输入密码:\n')
 9     if(userName != 'admin' or passWord != '123456'):
10         raise LoginError(userName,passWord)
11     else:
12         print('登录成功')
13 except LoginError as e:
14     print('您输入的用户名:{} 或密码:{}出错'.format(e.name,e.password))
15 except Exception as e:
16     print('系统异常')
17 
18 #系统自带异常:预定义异常解决系统逻辑上的错误,自定义异常:业务逻辑上的错误
posted @ 2022-08-31 16:05  TesterWei  阅读(89)  评论(0编辑  收藏  举报