# -*- coding: utf-8 -*-
# @Time : 2023/4/23 20:37
# @Author : yanfa
# @user : yanfa
# @File : error_and_exception.py
# @remark: 错误与异常
""""""
"""一、错误
1、语法错误
2、逻辑错误
3、系统错误"""
#1、语法错误 如SyntaxError: invalid syntax
# num=1
# if num>1
# print("num>1")
#2、逻辑错误
num=1
if num>1:
print("num<1")
#3、系统错误
"""二、异常
❖ 异常即是⼀个事件,该事件会在程序执⾏过程中发⽣,影响了程序的正常执⾏。
❖ 有些是由于拼写、配置、选项等等各种引起的程序错误,有些是由于程序功能处理逻辑不完善引起的漏
洞,这些统称为程序中的异常"""
def div(a,b):
return a/b
print(3/0) #ZeroDivisionError: division by zero
"""三、异常和错误的区别
错误与异常都是在程序编译和运⾏时出现的错误
❖ 异常可以被开发⼈员捕捉和处理
❖ 错误⼀般是系统错误,⼀般不需要开发⼈员处理(也⽆法处理),⽐如内存溢出"""
"""四、场景的异常类型
除零异常、名称异常、索引异常、键异常、值异常、属性异常、类型异常"""
#名称异常
num=1
print(name) #NameError: name 'name' is not defined
#索引异常
a=[1,2]
print(a[3]) #IndexError: list index out of range
#键异常
a={"a":1}
print(a["b"]) #KeyError: 'b'
#值异常
num="1"
if num>1:
print(num)
#类型异常
a='1'
print(a+2) #TypeError: can only concatenate str (not "int") to str
"""五、异常处理
各种异常继承自-》Exception-》BaseException-》object"""
#1、异常捕获
try:
pass
except Exception as e: #可以指定很细的异常如ValueError,也可以都捕获用Exception
pass #有异常会执行
else:
pass #没异常时执行
finally:
pass #都最终会执行
#2、异常抛出 raise
def raise_num(num):
if num<100:
raise ValueError(f"值错误:{num}")
else:
print("可输入的数字不能大于等于100")
raise_num(40) #ValueError: 值错误:40
#3、自定义异常
class MyException(Exception):
def __init__(self,value):
self.value=value
def __str__(self):
return repr(self.value)