程序可能会通过创建一个新的异常类来命名自己的异常。异常类应该继承Exception类,不管是间接继承还是直接继承。例如:在上面的例子中,Exception类的默认的__init__()函数被重写了,新的函数仅仅简单的创建一个value属性。这种行为就替换掉了默认的创建args属性的行为。异常类可以被定义来做任何其他类能够做的事情,但是一般我们都只是把他们尽量简单化,仅仅提供一些属性,提供有关于这个异常的信息供程序代码来获取。当要创建一个包含若干独立错误类的模块时,一个通常的做法是创建一个基础异常类,然后创建针对不同错误条件的特定的异常子类。大部分的异常类定义的名字都是以Error结尾的,与标准异常类是很相似的。许多标准模块自己也会定义一些自己的异常类,这些异常可能会在它们定义的函数中发生。