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

Python基础(9)

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

Python基础(9)

Python基础(9)

异常

异常定义异常处理常见异常的解决with上下文管理trackback模块自定义异常

异常 异常定义


查找错误:

def c():
    print(1/0)

def b():
    c()

def a():
    b()

a()

结果为:

报错从上往下是从最近依次调用到最初,找到第一个报错的行数,看它具体报错内容,这里是“a()”,以此类推,最后定位到552行的“print(1/0)”,错误为:ZeroDivisionError: division by zero。

异常处理

1、try…一个except结构

while True:
    try:
        temp = int(input('请输入数字:'))
        print('输入的数字是:',temp)
        if temp==88:
            print('退出程序')
            break
    except Exception as e:
        print(e)
        print(type(e))

print('程序结束!')

#结果为:
请输入数字:3
输入的数字是: 3
请输入数字:77
输入的数字是: 77
请输入数字:tt
invalid literal for int() with base 10: 'tt'

请输入数字:6
输入的数字是: 6
请输入数字:

2、try…多个except结构

while True:
    try:
        a = int(input('请输入数字:'))
        b = int(input('第二个数字:'))
        c = a/b
        print(c)
    except ZeroDivisionError:   # 是baseException类的基类,所以写在前面
        print('除数不能为0')
    except ValueError:   # 是baseException类的基类,所以写在前面
        print('不能将字符串转为数字')
    except NameError:   # 是baseException类的基类,所以写在前面
        print('变量不存在')
    except baseException as e:   # 前面子类没有囊括到的Error情况
        print(e)
        
#结果为:
请输入数字:3
第二个数字:6
0.5
请输入数字:3
第二个数字:0
除数不能为0
请输入数字:tt
不能将字符串转为数字
请输入数字:3
第二个数字:r
不能将字符串转为数字
请输入数字:

3、try…except…else结构

4、try…except…finally结构

常见异常的解决





常见异常汇总:

with上下文管理

语法结构如下:

with open('o.txt','r') as f:
    s = f.readlines()
    print(s)
trackback模块

1、打印异常信息

import traceback

try:
    a = 1
    b = 0
    print(a/b)
except:
    traceback.print_exc()

#结果为:
Traceback (most recent call last):
  File "D:/Users/86184/PycharmProjects/try/one.py", line 588, in 
    print(a/b)
ZeroDivisionError: division by zero

2、将异常信息写入日志文件

import traceback

try:
    a = 1
    b = 0
    print(a/b)
except:
    with open('o.txt','a') as f:
        traceback.print_exc(file=f)

结果在名为o的txt文件中:

自定义异常

class AgeError(Exception):
    def __init__(self,errorInfo):
        Exception.__init__(self)
        self.errorInfo = errorInfo

    def __str__(self):
        return '年龄异常'

if __name__ == '__main__':
    age = int(input('输入年龄:'))
    if age<1 or age>200:
        raise AgeError(age)   # 这里的raise有print的用处,也需要打印,所以用到了__str__方法
    else:
        print('年龄为:',age)

#结果为:
输入年龄:500
Traceback (most recent call last):
  File "D:/Users/86184/PycharmProjects/try/one.py", line 605, in 
    raise AgeError(age)
__main__.AgeError: 年龄异常
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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