python提供了非常重要的异常处理功能,来处理程序运行中出现的错误或异常。

  使用异常处理的代码结构如下:

try:
    pass             # 执行代码正文

except ImportError as e:   # 若出现ImportError,打印错误内容;跳转执行finally。
    print(e)
except IOError as e:       # 若出现IOError,打印错误内容;跳转执行finally。
    print(e)
except Exception as e:     # 若出现其他错误或异常,打印错误内容;跳转执行finally。
    # Exception是所有错误类的基类
    print(e)

else:       # 若上述正文未发生异常或错误,执行这里,再执行finally
    pass

finally:    # 最后,无论是否发生异常或错误,都归结执行这里。
    pass

  注意,异常和错误有许多分类,Exception是所有错误类的基类,其他都是派生类。

data = input('passwords:')  # input:'fewf'

# 使用异常处理
try:
    print(int(data))
except ValueError as e:
    print('输入错误')
except Exception as e:    # Exception是所有错误类的派生类
    print(e)

  除了解释器触发异常和错误外,代码也可以主动触发异常。

  一切事物皆对象,类也是一个对象。对象类内含有特殊成员__str__(),当print或者str时被调用。

  主动触发异常和错误,相当于调用对象类中的__str__()。

# 主动触发异常
data = input('passwords:')  # input:'fewf'
try:
    print(int(data))
    raise Exception('输入错误')
except Exception as e:
    print(e)
# 主动触发异常,相当于调用__str__()
class A:
    def __init__(self,data):
        self.data = str(data)
    def __str__(self):
        return self.data
a = A(123)
print(a)