异常

作者:追风剑情 发布于:2017-12-15 21:37 分类:Python

示例


# -*- coding: cp936 -*-
#异常
#使用raise函数引发异常
#raise Exception
#raise Exception('hyperdrive overload') #自定义错误信息

import exceptions
#dir函数可列出模块内容
#exceptions模块中的异常类都可用在raise语句中
#Exception是所有异常类的基类
print dir(exceptions)

#定义自己的异常类
#必须直接或间接继承Exception
class SomeCustomException(Exception): pass

#捕捉异常
#Python中的异常若没处理也会向上传播
try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x / y
except ZeroDivisionError:
    print "The second number can't be zero!"
    #也可以加上raise语句把异常继续向上传播
except TypeError:
    print "That wasn't a number. was it?"

#也可以用元组的方式同时捕捉多个异常,然后用同一个代码块处理。
#except (ZeroDivisionError, TypeError, ...):

try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x / y
except (ZeroDivisionError,TypeError), e:#声明个异常对象e
    print e #直接打印出异常
#在Python3.0中需要这样写
#except (ZeroDivisionError,TypeError) as e:

#捕捉所有异常
#写法一
#except:
    
#写法二(建议用这种)
#except: Exception, e

try:
    print 'A simple task'
except:
    print 'What? Something went wrong?'
else:#未发生异常时,会执行else后的代码
    print 'Ah...It went as planned.'
finally:#无论是否发生异常都会执行finally后的代码
    print 'Cleaning up...'
#Python2.5之前的版本finally需要独立使用

#下面代码用于忽略警告
import warnings
#warnings.warn("警告信息")
warnings.filterwarnings("ignore")
warnings.warn("被忽略的警告信息")


运行测试

11111.png

一些内建异常
类 名 描 述
Exception
所有异常的基类
AttributeError
特性引用或赋值失败时引发
IOError
试图打开不存在的文件(包括其他情况)时引发
IndexError
在使用序列中不存在的索引时引发
KeyError
在使用映射中不存在的键时引发
NameError
在找不到名字(变量)时引发
SyntaxError
在代码为错误形式时引发
TypeError
在内建操作或者函数应用于错误类型的对象时引发
ValueError
在内建操作或者函数应用于正确类型的对象,但是该对象使用不合适的值时引发
ZeroDivisionError
在除法或者模除操作的第二个参数为0时引发

标签: Python

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号