Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)

学习主题:异常处理
学习日期:2020-02-09
Python 版本:3.7.4

人非圣贤孰能无过。
异常就是错误,可以是程序员操作或者是用户的异常操作导致结果错误。

我们不能强求用户通过专业的角度与习惯去使用。
所以我们在程序中考虑到由于误操作引起的错误,以提高程序的适用性。

第 32讲 python 标准异常总结
Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第1张图片
Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第2张图片

完整版请点击https://fishc.com.cn/thread-45814-1-1.html

举几个例子吧

  • NameError
>>> a
Traceback (most recent call last):
  File "", line 1, in <module>
    a
NameError: name 'a' is not defined
#这里提示是NameError,查看上表原因是,
#尝试访问一个不存在的变量
  • SyntaxError
>>> for ii in range(2)
SyntaxError: invalid syntax
#这里提示是SyntaxError,查看上表原因是语法错误
#仔细查代码,原因是for最后没有加冒号‘:’。

第 33讲 怎么处理异常

file=open('alexma.txt','r')
file.read()
file.close()

Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第3张图片
提示错误,因为这个文件压根就不存在。
所以提示FileNotFoundError.

怎么避免呢,来使用 try except语句

try:
    file=open('alexma.txt','r')
    file.read()
    file.close()
except OSError:
    print('文件出错!')

在这里插入图片描述
再细化一下:

try:
    file=open('alexma.txt','r')
    file.read()
    file.close()
except OSError as ErrorReason:
    print('文件出错!,原因是:'+str(ErrorReason))

在这里插入图片描述
哇偶,这个还打印出了为什么会出错的原因,这么棒!!

多种错误类型呢,怎么添加呢。

try:
    a=1+b
    file=open('alexma.txt','r')
    file.read()
    file.close()
except OSError as ErrorReason:
    print('文件出错!,原因是:'+str(ErrorReason))
except NameError as ErrorReason:
     print('命名错误,,原因是:'+str(ErrorReason))

在这里插入图片描述
try except语句一旦报错,那么程序就不会再往下一步执行了。

怎么避免呢,还可以使用try finally语句

try finally用法

try:
    检测范围
except Exception  [as ErrorReason]:
    出现异常后的处理代码,这里一般是提醒报错的代码
finally :
     无论如何都会被执行的代码

举个实例吧

try:
    file=open(r'C:\Users\SNIPER\Desktop\mydemo、alexma.txt','w')
    file.write('I am alexma')
    b=b+1
    file.close()
except OSError as ErrorReason:
    print('文件出错!,原因是:'+str(ErrorReason))
except NameError as ErrorReason:
     print('命名错误,,原因是:'+str(ErrorReason))

如果不加finally,运行如下:
在这里插入图片描述
Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第4张图片
结果如上面两个截图,是提醒没有定义命名这个b,程序终止了,所以file.close()这行代码也不执行,
不执行这一步,内容就保存不到文件里,所以 文件是空的。

这个文件为空的问题在实际编程中经常会出现,加上finally就ok

try:
    file=open(r'C:\Users\SNIPER\Desktop\mydemo\alexma.txt','w')
    file.write('I am alexma')
    b=b+1  
except OSError as ErrorReason:
    print('文件出错!,原因是:'+str(ErrorReason))
except NameError as ErrorReason:
     print('命名错误,,原因是:'+str(ErrorReason))
finally:
     file.close()

在这里插入图片描述
Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第5张图片
这下内容也保存到了文本文件中。

raise语句

>>> a=1
>>> b=0
>>> a/b
Traceback (most recent call last):
  File "", line 1, in <module>
    a/b
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError('除数不能为0')
Traceback (most recent call last):
  File "", line 1, in <module>
    raise ZeroDivisionError('错啦,记住除数不能为0')
ZeroDivisionError: 除数不能为0
>>> 

Python学习笔记(32-33)异常与异常处理(附:python 标准异常总结)_第6张图片

你可能感兴趣的:(Python)