当前位置:首页>python>python进阶之异常捕获

python进阶之异常捕获

  • 2026-10-11 07:37:37
python进阶之异常捕获

每日一语录:

你给我胆子大一点,80%的人都很水,你觉得比你厉害的人也许还不如你,他们可能是演的大胆一点而已,勇敢的人先享受世界,要学会屈媚,穿着体面点,说话笃定点,行动大胆点,想成为谁,就去扮演谁,先装模做样,再像模像样,最后有模有样

今天重新更新python,之前写了v1版的arcMall花了很多时间,现在继续python~

错误与异常

学过java的都知道代码终会有错误与异常

那么接下来讲一下python中遇到的异常

1.ZeroDivisionError,除数为0时触发

num1=100num2=0result=num1/num2

2.TypeError:操作类型不匹配时候触发

result=10+'5'

3.AttributeError: 当对象没有指定的属性或方法时触发

class Person:    def __init__(self, name, age):        self.name = name        self.age = ageperson=Person("李易峰",12)print(person.name)print(person.age)print(person.gender)num=[10,20,30]num.add(40)

4.IndexError:当索引超出范围(索引越界)时触发。

num=[10,20,30]print(num[4])

5.NameError:当使用了不存在的变量时触发

print(name)

6.KeyError:当访问字典中不存在的 key 时触发。

obj={'name':'李易峰','age':12}print(obj['name'])print(obj['gender'])

7.ValueError:当值不合法,但类型正确时触发。

int('hello')

如何处理异常?

1.初级

try:    obj = {'name': '李易峰', 'age': 12}print(obj['name'])print(obj['gender'])except:print("程序异常")

2.捕获指定异常

try:    obj = {'name': '李易峰', 'age': 12}print(obj['name'])print(obj['gender'])except IndexError:print("程序异常")

3.多个异常

try:    a=int(input("请输入a"))    b=int(input("请输入b"))    result=a/bprint(result)except ZeroDivisionError:print("0不能作为除数")except ValueError:print("程序异常,你必须输入数字")except Exception:print("程序异常")

4.一个except可以捕获多个异常

try:    a=int(input("请输入a"))    b=int(input("请输入b"))    result=a/bprint(result)except (ZeroDivisionError,ValueError) as es:if isinstance(es,ZeroDivisionError):print("0不能作为除数")if isinstance(es,ValueError):print("程序异常,必须输入数字")

5.完整写法

try:    a=int(input("请输入a"))    b=int(input("请输入b"))    result=a/bprint(result)except (ZeroDivisionError,ValueError) as es:if isinstance(es,ZeroDivisionError):print("0不能作为除数")if isinstance(es,ValueError):print("程序异常,必须输入数字")else:print('挺好的,try中的代码没有任何异常!')finally:print('无论有没有异常,我的计算都结束了!')

6.当程序遇到不符合预期情况时,可以使用raise语句手动触发(抛出)异常。

try:    age=int(input("请输入年龄"))if age>10:print("你是儿童")if age<5:print("你是小孩儿")else:        raise ValueError("错误")except:print("程序异常")

异常传递机制

当程序遇到不符合预期情况时,可以使用raise语句手动触发(抛出)异常。

def test():    result="10"+5print(result)def test1():    try:test()    except Exception as e:print(f'程序异常{e}')def test2():    try:        test1()    except:print("程序异常")test2()

自定义异常

class SchoolNameError(Exception):    def __init__(self,msg):        super().__init__("名称异常"+msg)def checkName(name):if len(name)>10:        raise SchoolNameError("名称过长")else:print("名称正常")checkName("1234")

本节终~

arcMallV2版AI智能购物功能正在开发ing,大家敬请期待~

接下来会继续更新商城项目。
需要了解服务器和域名的购买以及返佣政策的可以找我,我有朋友做这方面对这些比较了解。
需要源码联系
今天开始建立两个群,第一个群:只讨论java+vue的项目,学历提升和卖服务器的就别进了,进了也会被踢。
第二个群:只讨论python项目,以后python的代码和教程会在群里开源,学历提升和卖服务器的就别进了,进了也会被踢。
QQ群

最新文章

随机文章