栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

异常报错合集

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异常报错合集

try……except
有间断的

try:
    a=input("输入一个被除数:")
    b=input("输入一个除数:")
    c=float(a)/float(b)
except baseException as e:
    print(e)      #发生错误时候,输出是 float division by zero
print(c)

一直循环的,前面加个死循环语句就可以。

while True:
    try:
        a=input("输入一个被除数:")
        b=input("输入一个除数:")
        c=float(a)/float(b)
    except baseException as e:
        print(e)      #发生错误时候,输出是 float division by zero
    print(c)

try……except……else

while True:
    try:
        a=input("输入一个被除数:")
        b=input("输入一个除数:")
        c=float(a)/float(b)
    except baseException as e:
        print(e)      #发生错误时候,输出是 float division by zero
    else:
        d=float(a)+float(b)
        print("换一种计算法:",d)
print(c)

try……except……finally

while True:
    try:
        a=input("输入一个被除数:")
        b=input("输入一个除数:")
        c=float(a)/float(b)
    except baseException as e:
        print(e)      #发生错误时候,输出是 float division by zero
    else:
        print(c)
    finally:
        print("我是最后的语句,不管什么情况我都执行")
#成功时候的语句
#输入一个被除数:2
#输入一个除数:3
#0.6666666666666666
#我是最后的语句,不管什么情况我都执行

#失败时候的语句
#输入一个被除数:2
#输入一个除数:0
#float division by zero
#我是最后的语句,不管什么情况我都执行

用finally结束程序的执行,不管程序是不是异常,最后都选择关闭文件

try:
    f = open("C:/Users/姚/Desktop/ceshi.txt","r")  #txt,文件属性不要落下
    content=f.readline()
    print(content)       #输出内容
except:
    print("没有这个文件")  #如果没找到文件,就会发生异常,就执行这条语句
finally:
    f.close()     #关闭这个文件

可以用traceback溯源,找到问题,并且把问题打印在一个记事本中

import traceback
try:
    print("第一步")
    a=1/0            #这里就会报错
except:
    with open("C:/Users/姚/Desktop/ceshi.txt","a") as f:
        traceback.print_exc(file=f)    #将出现的错误写进文档里

补充,if name == “main”
这是固定写法,前期学习的时候,代码量比较少,不需要这个也能正常输出结果。但是不严谨,如果后期代码量多了,需要有个main来进行协调,就是用这个。

#补充if __name__ == "__main__"
print("第一步")
def say_1():
    str="hello_1"
    print(str)
    print(__name__+"这是say_1里的__name__")

if __name__ == "__main__":
    print("这是if之后的第一步")
    say_1()
    print(__name__+"这是if之后的__name__意思")
    
#输出结果 
# 第一步
# 这是if之后的第一步
# hello_1
# __main__这是say_1里的__name__
# __main__这是if之后的__name__意思


print("第一步")
def say_1():
    str="hello_1"
    print(str)
    print(__name__+"这是say_1里的__name__")
##########把上面定义为hello文件##########
if __name__ == "__main__":
    print("这是if之后的第一步")
    hello.say_1()
    print(__name__+"这是if之后的__name__意思")

#输出结果
# 第一步
# 这是if之后的第一步
# hello_1
# hello这是say_1里的__name__
# __main__这是if之后的__name__意思

自定义异常,将异常问题用自己的方式进行定义,更加直观
插入raise的用法,当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
raise()
用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。
抛出异常和自定义异常,Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

class AgeError(Exception):            #这里定义了一个错误叫年龄错误,继承Exception这个错误的大类
    def __init__(self,errorInfo):     #构造函数
        Exception.__init__(self)      #调用父类构造器
        self.errorInfo = errorInfo    
    def __str__(self):
        return str(self.errorInfo)+",年龄错误!应该在 1-150 之间"  #通过重写,表达的更加直观

############测试代码################
if __name__ == "__main__":              #如果为 True,则模块是作为独立文件运行, 可以执行测试代码
    age = int(input("输入一个年龄:"))
    if age<1 or age>150:
        raise AgeError(age)            #利用raise来抛出AgeError和年龄数据
    else:
        print("正常的年龄:",age)
    
#当输入值为200,会报错,然后就
# raise AgeError(age)
# __main__.AgeError: 200,年龄错误!应该在 1-150 之间
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/504067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号