Python自定义异常可以通过继承自带的异常类来实现。

示例:

# simple
def validate(name):
    if len(name) < 8:
        raise ValueError # or raise ValueError()

# better
def validate1(name):
    if len(name) < 8:
        raise ValueError('Name too short: {}'.format(name))

# more specific customerize exception
class NameTooShortError(ValueError):
    pass

def validate2(name):
    if len(name) < 8:
        raise NameTooShortError(name)

print(validate2('test'))

输出结果:

validate:
ValueError

validate1:
ValueError: Name too short: test

validate2:
__main__.NameTooShortError: test

自定义异常类可以抛出更明确无歧义的异常信息。