Python(异常)

异常
定义
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行
编译通过  ----> 运行期间
两种类型
语法错误
SyntaxError: invalid syntax 
异常
ZeroDivisionError: division by zero
异常都是在运行期间发生的问题.
什么是异常?  
列表下标越界
文件读取
类型错误
异常处理
1. try....except...  捕获异常
try
  可能会发生异常的代码


 except:
  有异常才会进入代码块
try
1. try后面可以跟多个except,但是最大的要放在最后
except FileNotFoundError as err:
print("文件找不到异常!",err)
except NameError as err:
print("名字异常!",err)
except IndexError as err:
print("下标异常!",err)
except Exception as err:   --->就要放在最后
print("未知异常!",err)
2. try...except...else
try:
    可能发生异常的代码
    except:
    有异常时执行的代码
    else:
    没有异常才会执行的代码
3. try....finally
try:
可能发生异常的代码
finally:
无论是否存在异常,都必须执行的代码
try:
    可能发生异常的代码
    except:
    有异常时执行的代码
    else:
    没有异常才会执行的代码
    finally:
无论是否存在异常,都必须执行的代码
场景
文件操作
数据库操作
4. 多层的try
1.异常允许嵌套的
2.如果内层的try没有捕获异常,则异常可以传递到外层,如果外层有捕获异常的话则会将内层的捕获异常是可以传递到外层的
3.注意:  try不可以与else结合使用,必须try...except...else
4.如果函数A中有异常,而在函数B中调用A,函数B中的try...except 就可以捕获A中产生的异常
except 后面可以跟
1. Exception  所有的异常都可以捕获到
2. 虽然可以通过Exception捕获到异常,但是无法得到详细信息,如果想得到信息:
  采用如下格式:
  except Exception as 名字:   名字相当于就是一个变量名
  在except代码块使用名字   --->错误消息
3.如果可以明确异常类型的话,直接在except后面跟异常类型
  格式如下:
  except xxxError [as 名字]:
  在except代码块使用名字   --->错误消息
4.except (xxxxError,xxxError) [as 名字]:   注意: 错误类型如果比较多的情况下放到元组中
在except代码块使用名字   --->错误消息
try..except..else...finally
1. 只要finally无论是否有异常,或者返回值,都会最后执行finally中的内容
2. 如果没有finally ,try..except..else...
没有返回值: 有异常  try..except..
          没有异常: try..else..
有返回值:   有异常  try....except..
         没有异常: try....  在try中就直接返回值,不会再计入else中
抛出异常
1. 系统默认抛出异常
open("test.txt","r")  --->FileNotFoundError
int("u")  ----> 系统抛出的异常
2.主动抛出异常:
raise  异常对象
抛出系统异常
raise Exception("...")
抛出自定的异常
raise LengthError("...")
思路
第一部分
1. 自定义一个异常子类
class 子类(Exception):
def __init__(self,message):
2. 在重写__init__方法的时候,务必super().__init__()
3. self.message=message 赋值
4. 如果打印对象就出现错误消息,则需要重写__str__方法
第二部分:使用自定义异常
1.在符合题目要求的情况下,创建自定义异常子类的对象
2.使用raise 抛出异常对象
   raise e
第三部分:处理异常
try:
抛出异常
except 自定义异常类型 as 对象:   as后面的对象就是raise抛出的对象  
print(对象)

猜你喜欢

转载自blog.csdn.net/qq_42240071/article/details/80409804
今日推荐