美文网首页python学习日记
python中的异常处理

python中的异常处理

作者: 奔跑de鳄鱼 | 来源:发表于2019-03-24 09:14 被阅读0次

本文所记述的是一些基础知识点中平时用的比较少的方法。

一、主动引发异常

使用raise语句主动引发异常,例如:

raise Exception

一些常用的异常类:

  • Exception 几乎所有的异常类都是从它派生而来的
  • AttributeError 引用属性或给它赋值失败时引发
  • OSError 操作系统不能执行指定的任务(如打开文件)时引发,有多个子类
  • IndexError 使用序列中不存在的索引时引发,为LookupError的子类
  • KeyError 使用映射中不存在的键时引发,为LookupError的子类
  • NameError 找不到名称(变量)时引发
  • SyntaxError 代码不正确时引发
  • TypeError 将内置操作或函数用于类型不正确的对象时引发
  • ValueError 将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适
  • ZeroDivisionError 在除法或求模运算的第二个参数为零时引发

二、raise...from...

在执行下列语句是会引发两个异常。

try: 
     1/0 
except ZeroDivisionError: 
     raise ValueError

一个是由ZeroDivisionError引发的:

Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
ZeroDivisionError: division by zero

另一个是由ValueError引发的:

Traceback (most recent call last): 
  File "<stdin>", line 4, in <module> 
ValueError

使用raise ... from ...语句可以提供自己的异常上下文,使用None将禁用except捕获的异常的上下文。

例如以下代码:

try: 
     1/0 
except ZeroDivisionError: 
     raise ValueError from None 
# 输出:
Traceback (most recent call last): 
  File "<stdin>", line 4, in <module> 
ValueError

三、捕获多个异常

1.使用多个except语句

try:  
   x = int(input('Enter the first number: ')) 
   y = int(input('Enter the second number: ')) 
   print(x / y) 
except ZeroDivisionError: 
   print("The second number can't be zero!") 
except TypeError: 
   print("That wasn't a number, was it?")

2.使用一条语句捕获多个异常

注意:这种方法except语句后面的各类异常必须加括号。

try:  
   x = int(input('Enter the first number: ')) 
   y = int(input('Enter the second number: ')) 
   print(x / y) 
except (ZeroDivisionError, TypeError, NameError): 
   print('Your numbers were bogus ...') 

四、获取异常信息:as e

try:  
   x = int(input('Enter the first number: ')) 
   y = int(input('Enter the second number: ')) 
   print(x / y) 
except (ZeroDivisionError, TypeError) as e: 
   print(e)

当然,也可以使用Exception方法捕获所以的异常信息,例如:

try:  
   x = int(input('Enter the first number: ')) 
   y = int(input('Enter the second number: ')) 
   print(x / y) 
except Exception as e: 
   print(e) 

五、else和finally

else和finally都是紧接try...except...语句的,不同的是,else只有在异常没有被引发时才会执行,而finally无论异常是否引发,都会被执行。

相关文章

  • Python学习(八)

    异常处理 Python中的异常类型总结: Python内置异常类的层次结构: 异常检测 try-except语句 ...

  • Python异常处理

    参考 Python菜鸟教程错误与异常 Python 异常处理 错误和异常 Python中(至少)有两种错误:语法错...

  • Python中的异常处理

    异常介绍 先来看一个最简单的异常,输出一个没有定义的变量: 那么上面就是出现异常的一个情况,NameError是异...

  • python的中异常处理

    Python 使用被称为 异常 的特殊对象来管理程序执行期间发生的错误。每当发生让 Python 不知所措的错误时...

  • python中的异常处理

    资料来源:http://www.cnblogs.com/linhaifeng/articles/6232220.h...

  • python 中的异常处理

    何为异常 在现实生活中,我们都或多或少遇到过一些不正常的时候,这个时候就可以称为人的“异常”了,人作为一个高等生物...

  • Python中的异常处理

    1.异常是什么? 1.1异常 就是不正常的情况,程序开发过程中错误和bug都是不正常的情况 1.2异常发生的后果 ...

  • Python中的异常处理

    什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法...

  • Python中的异常处理

    Python中的异常处理和Java中的类似,看下代码: 当程序存在多个 except block时,最多只有一个...

  • python中的异常处理

    本文所记述的是一些基础知识点中平时用的比较少的方法。 一、主动引发异常 使用raise语句主动引发异常,例如: 一...

网友评论

    本文标题:python中的异常处理

    本文链接:https://www.haomeiwen.com/subject/dxmyvqtx.html