python笔记7--常见异常处理

2023-11-07

python笔记7--常见异常处理

异常处理是提高程序稳定、可靠的一个重要因素,笔者最近整理了下一常用的python异常处理方法,以及使用案例,记录在此处以便后续查阅。

功能

包括raise、try except两中常见异常处理方法,具体包括ValueError、OSError、TypeError、IndexError、KeyError、AttributeError、ZeroDivisionError、NameError、IOError等

代码

python源码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-

import math

def raise_func1(x):
    # def sqrt(x):
    if not isinstance(x, (int, float)):
        raise TypeError( 'x must be numeric ' )
    elif x < 0:
        raise ValueError( 'x cannot be negative ')
    else:
        print(math.sqrt(x))

def error_func1():
    '''
    ValueError
    '''
    while True:
        try:
            x = int(input('input x:'))
            print('x = ' + str(x))
            break
        except ValueError:
            print('Not valid input')


def error_func2():
    '''
    OSError
    ValueError
    '''
    try:
        f = open('myfile.txt')
        s = f.readline()
        i = int(s.strip())
        print('i= '+str(i))
    except OSError as err:
        print('os error: {0}'.format(err))
    except ValueError:
        print('Could not convert data to an integer.')


def error_func3(x):
    '''
    TypeError
    '''
    try:
        y = abs(x)
        print('abs({0})={1}'.format(x,y))
    except TypeError as err:
        print('type error: {0}'.format(err))


def error_func4(index):
    '''
    IndexError
    '''
    int_list = [0,1,2,3,4,5]
    try:
        value = int_list[index]
        print('int_list[{0}] = {1}'.format(index,value))
    except IndexError as err:
        print('index error: {0}'.format(err))


def error_func5(name):
    '''
    KeyError
    '''
    str_dict = {'a':1, 'b':2}
    try:
        value = str_dict[name]
        print('str_dict[{0}] = {1}'.format(name,value))
    except KeyError as err:
        print('key error: {0}'.format(err))


def error_func6():
    '''
    AttributeError
    '''
    int_list = [1,2,3]
    try:
        value = int_list.what
        value = int_list.count
        print(value)
    except AttributeError as err:
        print('attribute error: {0}'.format(err))


def error_func7(x):
    '''
    ZeroDivisionError
    '''
    try:
        y = 6 / x
        print(y)
    except ZeroDivisionError as err:
        print('ZeroDivision Error: {0}'.format(err))

    
def error_func8():
    '''
    NameError
    '''
    try:
        print(x)
    except NameError as err:
        print('Name Error: {0}'.format(err))


def error_func9(filename):
    '''
    IOError
    '''
    try:
        f = open(filename)
        f.close()
    except IOError as err:
        print('IO Error: {0}'.format(err))


def error_func10(filename):
    '''
    with Exception, catch all kinds of error!
    '''
    try:
        with open(filename,'r') as f:
            str_list = f.readlines()
            print(str_list)
    except Exception as e:
        print('different err:',e)


def error_functions():
    others = 'EOFError,KeyboardInterrupt,StopIteration,SyntaxError,SystemError'
    print('other error, including '+others)


if __name__ == '__main__':
    # raise_func1(-5)
    # error_func1()
    # error_func2()
    # error_func3(-5) #'abc'
    # error_func4(0) # 8
    # error_func5('a') # 'c'
    # error_func6()
    # error_func7(6) # 0
    # error_func8()
    error_func9('IO.txt')
    error_func10('IO.txt')
    error_functions()

通过 traceback 来输出报错的堆信息

#!/usr/bin/python3
# -*- coding:utf-8 -*-

import traceback

def get_error_info():
    try:
        a = 5 
        b = 0
        print(a/b)
    except Exception as e:
        print(e)
        print(traceback.format_exc())


if __name__== '__main__':
    get_error_info()

"""
输出结果:
division by zero
Traceback (most recent call last):
  File "/home/xg/files/code/gitlab/xgdoc/code/tmp/20221201-test-log/app.py", line 10, in get_error_info
    print(a/b)
ZeroDivisionError: division by zero
"""

说明

笔者测试系统为Ubuntu1910,Python3.7.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python笔记7--常见异常处理 的相关文章

随机推荐

  • 即时通讯IM技术领域基础篇

    转自 https juejin im post 5a694f216fb9a01cb74e8f74 即时通讯IM技术领域基础篇 即时通讯IM技术领域提高篇 议题 准备工作 协议选型 网络传输协议选择 和 数据通信协议选择 xxx项目架构 架构
  • 重学java—基础知识点

    数据类型 1 基本数据类型 boolean 1 byte 8 char 16 short 16 int 32 float 32 long 64 double 64 每个类型都有它对应的包装类 自动装箱和拆箱操作 2 缓存池 valueOf
  • Rem与Px的转换

    rem是CSS3中新增加的一个单位值 他和em单位一样 都是一个相对单位 不同的是em是相对于元素的父元素的font size进行计算 rem是相对于根元素html的font size进行计算 这样一来rem就绕开了复杂的层级关系 实现了类
  • xshell7和xftp7下载和安装

    xshell7和xftp7下载和安装 环境 win10 链接 https pan baidu com s 1i6Zl2eW8tJJ83YAc02oQjg 提取码 6666 复制这段内容后打开百度网盘手机App 操作更方便哦 2022年06月
  • pandas 读/写取多个sheet 的excel

    经常使用pandas 读取多个sheet 的文件 读取方式 先获得sheet 名字 再指定sheet name 参数进行读取 写多个sheet 到同一个文件 import pandas as pd infile data test xlsx
  • FileReader与FileWriter

    FileReader与FileWriter分别继承Reader和Writer 以字符为单位广泛用于文件操作的节点流 FileReader类用于从文本文件读数据 每次读入一个字符或者一个字符数组 FileWriter类用于从文本文件写数据 每
  • 学python的第十四天---小蓝(5)

    一 最长公共子序列 dp 二 蓝桥骑士 最长递增子序列 三 蓝肽子序列 最长公共子序列 四 合唱队形 最长递增子序列 五 字符串编辑问题 引入一个难一点的题目 最优包含 一 最长公共子序列 dp Maxn 1005 dp 0 for in
  • 英寸和厘米的换算python_运用python实现英制单位英寸与公制单位厘米互换

    原标题 运用python实现英制单位英寸与公制单位厘米互换 python能实现的东西有很多 其中就有运用python来实现英制单位英寸与公制单位厘米互换 那么具体应用怎么换算呢 下面羽忆教程网为你提供运用python实现英制单位英寸与公制单
  • 【cocosStudio】查看官方示例--调用cocoStudio控件

    理解 将cocoStudio的ui控件转换成cocos的GUI控件来操作 通过widgetFromJsonFile 加载根容器Plane控件 通过Helper seekWidgetByTag 寻找子控件 打开官方示例 打开CMD CD到D
  • Java远程调试(Remote Debug)可导致远程命令执行漏洞

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Java远程调试 Remote Debug 可导致远程命令执行漏洞 注释startup sh第2行 bin bash declare x CATALINA OPTS ser
  • css元素定位:通过元素的标签或者元素的id、class属性定位

    前言 大部分人在使用selenium定位元素时 用的是xpath元素定位方式 因为xpath元素定位方式基本能解决定位的需求 xpath元素定位方式更直观 更好理解一些 css元素定位方式往往被忽略掉了 其实css元素定位方式也有它的价值
  • python2.7下input()函数输入参数

    使用input 函数 在运行时输入字符需要用引号括起来 但在交互模式下不需要 question Traceback most recent call last File
  • 从零编写c++之http服务器(3)-http服务

    http全称超文本传输协议 可调试性高 扩展性也强 上两个篇章我们已经拥有了epoll事件驱动框架和线程池处理网络事件 接下来我们要先写一个基础网络套接字 然后在此基础上扩展出http的套接字 献上类图如下 完整源码见
  • 也要适当晋升

    和一个哥们聊天 说到要不要当组长这个话题 我说我被无良组长们坑坏了 自己搞不定老往下属身上推 我如果当组长 肯定也是无良组长 水平菜 成为自己讨厌的人 他说 哥们 你还是不懂职场规则啊 别说让当 就是不让当 也要创造条件去当 公司资源可以提
  • connect to host master port 22: No route to host 问题解决方案

    问题描述 connect to host master port 22 No route to host 问题分析 先去ifconfig能不能出现你自己配的网卡 一般情况是不能的 或者重启网卡会启动失败 当然了使用远程连接工具也会连接不上
  • h5微信公众号分享:错误40048,invalid url domain与错误63002,invalid signature问题解决

    1 错误 63002 config fail Error 系统错误 错误码 63002 invalid signature 20201207 15 10 10 1 发送当前接口请求的页面URL需要跟后台协商 是否需要编码 以什么样的形式发送
  • 【Docker】Swarm集群的配置与管理

    实现Docker Swarm集群部署安装 在线创建Swarm集群和自动编配 安装Docker Swarm 1 通过实训平台进入到操作系统界面 该实验需要两台虚拟机 首先修改主机名 修改第一台主机的主机名叫smoker 第二台主机的主机名叫j
  • 【Maki ‘ s Lab学习讲座】超前学习法

    作者 Maki Maki的完美算术教室 排版 Penguin IT鹅 当人们愉快地承受苦难时 苦难也会变得美丽 这不是麻木 而是由于心灵的伟大 亚里士多德 Maki s Lab简介 Maki s Lab核心成员来自多伦多大学 清华大学等世界
  • 咕咕驴AI短视频换脸小程序源码搭建教程

    咕咕驴AI短视频一键换脸小程序源码 带流量主搭建教程 源码下载 https github com peizhou faceoff 下载源码到本地后 修改appid 修改为你自己的微信小程序 打开 dist pages ele index j
  • python笔记7--常见异常处理

    python笔记7 常见异常处理 功能 代码 说明 异常处理是提高程序稳定 可靠的一个重要因素 笔者最近整理了下一常用的python异常处理方法 以及使用案例 记录在此处以便后续查阅 功能 包括raise try except两中常见异常处