当前位置: 首页 > 编程笔记 >

Python异常学习笔记

慕容星晖
2023-03-14
本文向大家介绍Python异常学习笔记,包括了Python异常学习笔记的使用技巧和注意事项,需要的朋友参考一下

异常(exceptions)是Python中一种非常重要的类型,它和语法错误不同,是在程序运行期间引发的错误。Python中内置了很多异常,如IOError,NameError,KeyboardInterrupt等,更多的异常可以点击这里。

异常的意义在于提供一种更加优雅的运行方式,例如用Python编写一个计算器,如果用户输入不能计算的对象,则可以抛出异常,并进行处理, 如下:

while True:
  try:
    x= int(input('Please In enter A number:'))
    print "Your Input is %s"%x
    break
  except Exception,e:
    print e

Python是一门面向对象的语言,异常本身也是对象, 用dir(Exception)查看Exception类的属性,如下:[‘__class__', ‘__delattr__', ‘__dict__', ‘__doc__', ‘__format__', ‘__getattribute__', ‘__getitem__', ‘__getslice__', ‘__hash__', ‘__init__', ‘__new__', ‘__reduce__', ‘__reduce_ex__', ‘__repr__', ‘__setattr__', ‘__setstate__', ‘__sizeof__','__str__', ‘__subclasshook__', ‘__unicode__', ‘args', ‘message'], 除开args和message外,其余的均为其内部属性, 其中args是传递给异常类的构造函数的一个类型为元祖的参数, 一些内置函数,如IOError需要它接收多个参数,其它的则直接是直接传递一个错误提示字符串。

Python的异常可以通过try语句来检查,任何在try语句块里的代码都会被监测,检查有无异常产生,except会根据输入检查异常的类型,并执行except内的代码。那么,这里就不禁要问问,except后面的两个参数到底是什么?如果第一个是错误的类型,那么第二参数呢?对其进行检测,发现它是属于Exception的实例,也就是说,它是由异常类产生的一个具体的异常对象。
那么,用户如果自定义一个异常呢?Python中规定,所有异常必须直接或者间接的继承自Exception类,如下,自定义的异常:

#!/usr/bin/env python
class MyError(Exception):
  def __init__(self,*args):
    self.value=args[0]
  def __str__(self):
    return repr(self.value)
def showname(*args):
  if args:
    print args
  else:
    raise MyError('Error: need 1 arguments at last, 0 Input')

把这个文件保存为showname.py,其它模块就可以引入调用showname函数,并对它执行的结果进行检测:

#!/usr/bin/env python
import showname
try:
  showname.showname()
except showname.MyError,e:
  print e

值得注意的几点是:1, python中用raise抛出异常; 2, 由于所有异常都是继承自Exception,所以,当不确定异常类型的时候,可以在except后面直接接Exception来捕获所有异常;3,由于异常的继承关系,异常内的所有属性都是可以被重定义的,也可以在自定义的异常上增加属性。

 类似资料:
  • Python 中第一个让人印象深刻的语法就是缩进,Python 跟 js 不同,跟golang 不同,跟 shell script 不同,跟 c 不同,它们并没有要求必须缩进,但是 Python 不同,它就如同 jade 一样,缩进是必须的。

  • 本文向大家介绍Python中的异常处理相关语句基础学习笔记,包括了Python中的异常处理相关语句基础学习笔记的使用技巧和注意事项,需要的朋友参考一下 异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件,解释器(也可以是程序员引发异常)会引发一个异常通知前段控制流有错误发生,对异常的处理发生在第二阶段,异常引发后,可

  • 本文向大家介绍Node.js异步I/O学习笔记,包括了Node.js异步I/O学习笔记的使用技巧和注意事项,需要的朋友参考一下 “异步”这个名词的大规模流行是在Web 2.0浪潮中,它伴随着Javascript和AJAX席卷了Web。但在绝大多数高级编程语言中,异步并不多见。PHP最能体现这个特点:它不仅屏蔽了异步,甚至连多线程也不提供,PHP都是以同步阻塞的方式来执行。这样的优点利于程序猿顺序编

  • 本文向大家介绍Python中的类学习笔记,包括了Python中的类学习笔记的使用技巧和注意事项,需要的朋友参考一下 Python使用中面向对象的语言,支持继承、多态; 定义一个Person类:   可以修改Person的类方法 Person().sayHello也是一个函数,可以赋值给变量,并可以直接调用;   Person.sayHello与Person().sayhello并不是同一个对象,直

  • 本文向大家介绍python web框架学习笔记,包括了python web框架学习笔记的使用技巧和注意事项,需要的朋友参考一下 一、web框架本质 1.基于socket,自己处理请求 2.基于wsgi WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务

  • 本文向大家介绍python学生管理系统学习笔记,包括了python学生管理系统学习笔记的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下 基于列表存储的学生管理系统,实现如下功能 ================== 学生管理系统 1、添加学生信息 2、删除学生信息 3、查询学生信息 4、修改学生信息 5、显示所有学生信息 6