首先我们要理解什么叫做**“异常”**?学习
在程序运行过程中,总会遇到各种各样的教程问题和错误。
有些错误是异制我们编写代码时自己造成的:比如语法错误、调用错误,常机甚至逻辑错误。学习
还有一些错误,教程则是异制不可预料的错误,但是常机完全有可能发生的:比如文件不存在、磁盘空间不足、学习网络堵塞、教程系统错误等等。异制
这些导致程序在运行过程中出现异常中断和退出的常机错误,我们统称为异常。学习大多数的教程异常都不会被程序处理,而是异制以错误信息的形式展现出来。

异常的分类:
异常有很多种类型,Python内置了几十种常见的异常,无需特别导入,直接就可使用。
需要注意的网站模板是,所有的异常都是异常类,首字母是大写的!
异常的危害:
如果程序中一旦出现了异常的语句代码,则该异常就会立即中断程序的运行!
因此:为了保证程序的正常运行,提高程序健壮性和可用性。我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。
基本语法
异常的基本结构:try except
# (1)通用异常 try: pass # 正常执行语句 except Exception as ex: pass # 异常处理语句 # (2)指定异常 try: pass # 正常执行语句 except <异常名>: pass # 异常处理语句 #(3) 捕获多个异常 # 捕获多个异常有两种方式,第一种是一个except同时处理多个异常,不区分优先级: try: pass # 正常执行语句 except (<异常名1>, <异常名2>, ...): pass # 异常处理语句 # 第二种是区分优先级的: try: pass # 正常执行语句 except <异常名1>: pass # 异常处理语句1 except <异常名2>: pass # 异常处理语句2 except <异常名3>: pass # 异常处理语句3 # 异常嵌套 try: try: with open("abc") as f: pass except NameError as e: print(e) except OSError as e: print("OSError:",e.strerror)机制说明:
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的企商汇过程中发生了异常,那么try子句余下的部分将被忽略。如果异常那么对应的except子句将被执行。
在Python的异常中,有一个通用异常:Exception,它可以捕获任意异常。
finally
try: pass # 正常执行语句 except Exception as e: pass # 异常处理语句 finally: pass # 无论是否发生异常一定要执行的语句,比如关闭文件,数据库或者socketraise语句
很多时候,我们需要主动抛出一个异常。Python内置了一个关键字raise,可以主动触发异常。
raise可以抛出自定义异常,我们已将在前面看到了python内置的一些常见的异常类型。大多数情况下,内置异常已经够用了。但是有时候你还是需要自定义一些异常:自定义异常应该继承Exception类,直接继承或者间接继承都可以,例如:
# 1.用户自定义异常类型 class TooLongExceptin(Exception): "this is users Exception for check the length of name " def __init__(self, len): self.len = len def __str__(self): return "输入姓名长度是" + str(self.len) + ",超过长度了" try: name = input("enter your name:") if len(name) > 5: raise TooLongExceptin(len(name)) else: print(name) except TooLongExceptin as error: # 这里异常类型是用户自定义的 print("打印异常信息:", error)