python异常处理try判断整数_Python 异常处理 try、except、raise

一、try...except

有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError

例子:

1

2

3

4

a=10

b=0

c=a/b

print "done"

运行结果:

Traceback (most recent call last):

File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in

c=a/b

ZeroDivisionError: integer division or modulo by zero

我们发现程序因为ZeroDivisionError而中断了,语句print "done" 没有运行。为了处理异常,我们使用try...except,更改代码:

1

2

3

4

5

6

7

8

a=10

b=0

try:

c=a/b

print c

except ZeroDivisionError,e:

print e.message

print "done"

运行结果:

integer division or modulo by zero

done

这样程序就不会因为异常而中断,从而print "done"语句正常执行。

我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

处理一组异常可以这样写(其中e代表异常的实例):

1

2

3

4

try:

pass

except (IOError ,ZeroDivisionError),e:

print e

try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。

例子:

1

2

3

4

5

6

7

8

9

10

a=10

b=0

try:

c= b/ a

print c

except (IOError ,ZeroDivisionError),x:

print x

else:

print "no error"

print "done"

运行结果:

0

no error

done

二、raise 引发一个异常

例子:如果输入的数据不是整数,则引发一个ValueError

1

2

3

4

5

inputValue=input("please input a int data :")

if type(inputValue)!=type(1):

raise ValueError

else:

print inputValue

假设输入1.2,运行结果为:

please input a int data :1.2

Traceback (most recent call last):

File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in

raise ValueError

ValueError

如果输入1,运行结果为:

please input a int data :1

1

三、try ...finally

无论异常是否发生,在程序结束前,finally中的语句都会被执行。

1

2

3

4

5

6

a=10

b=0

try:

print a/b

finally:

print "always excute"

运行结果:

Traceback (most recent call last):

always excute

File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 4, in

print a/b

ZeroDivisionError: integer division or modulo by zero

虽然有异常发生,但在程序终止前,finally中的语句也能正常执行。。

finally语句也可以和except语句一起使用。

1

2

3

4

5

6

7

8

a=10

b=0

try:

print a/b

except:

print "error"

finally:

print "always excute"

运行结果:

error

always excute

四、自定义一个异常类

自定义一个MyException类,继承Exception。

1

2

3

4

class MyException(Exception):

def __init__(self,message):

Exception.__init__(self)

self.message=message

如果输入的数字小于10,就引发一个MyException异常:

1

2

3

4

5

6

a=input("please input a num:")

if a<10:

try:

raise MyException("my excepition is raised ")

except MyException,e:

print e.message

运行结果:

please input a num:1

my excepition is raised

五、python所有的标准异常类:

异常名称描述

BaseException

所有异常的基类

SystemExit

解释器请求退出

KeyboardInterrupt

用户中断执行(通常是输入^C)

Exception

常规错误的基类

StopIteration

迭代器没有更多的值

GeneratorExit

生成器(generator)发生异常来通知退出

SystemExit

Python 解释器请求退出

StandardError

所有的内建标准异常的基类

ArithmeticError

所有数值计算错误的基类

FloatingPointError

浮点计算错误

OverflowError

数值运算超出最大限制

ZeroDivisionError

除(或取模)零 (所有数据类型)

AssertionError

断言语句失败

AttributeError

对象没有这个属性

EOFError

没有内建输入,到达EOF 标记

EnvironmentError

操作系统错误的基类

IOError

输入/输出操作失败

OSError

操作系统错误

WindowsError

系统调用失败

ImportError

导入模块/对象失败

KeyboardInterrupt

用户中断执行(通常是输入^C)

LookupError

无效数据查询的基类

IndexError

序列中没有没有此索引(index)

KeyError

映射中没有这个键

MemoryError

内存溢出错误(对于Python 解释器不是致命的)

NameError

未声明/初始化对象 (没有属性)

UnboundLocalError

访问未初始化的本地变量

ReferenceError

弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError

一般的运行时错误

NotImplementedError

尚未实现的方法

SyntaxError

Python 语法错误

IndentationError

缩进错误

TabError

Tab 和空格混用

SystemError

一般的解释器系统错误

TypeError

对类型无效的操作

ValueError

传入无效的参数

UnicodeError

Unicode 相关的错误

UnicodeDecodeError

Unicode 解码时的错误

UnicodeEncodeError

Unicode 编码时错误

UnicodeTranslateError

Unicode 转换时错误

Warning

警告的基类

DeprecationWarning

关于被弃用的特征的警告

FutureWarning

关于构造将来语义会有改变的警告

OverflowWarning

旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning

关于特性将会被废弃的警告

RuntimeWarning

可疑的运行时行为(runtime behavior)的警告

SyntaxWarning

可疑的语法的警告

UserWarning

用户代码生成的警告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c oracle实体模型,ADO.NET实体数据模型详细介绍

OleDbConnection&#xff0c;OracleConnection 或者SqlConnection这种连接&#xff0c;直接执行sql语句。现在的连接方式执行sql语句有了很大的不同&#xff0c;下面先看看简单的单表的增删改查操作&#xff0c;然后再看多表的关联查询&#xff0c;带参数查询等。一、ADO.NET E…

面向工业场景,如何实现绿色智能?

从瓦特的蒸汽机开始轰鸣&#xff0c;到爱迪生的电灯照亮黑暗&#xff0c;从埃尼阿克把0和1变成通用的语言&#xff0c;再到人工智能的无处不在。一次工业革命&#xff0c;会带来一次社会的演进&#xff0c;而每一次技术升级的背后&#xff0c;产业升级也几乎是必然。但产业发展…

云原生,开发者的黄金时代

简介&#xff1a; 如果说云是一种信仰&#xff0c;那么云原生就是一种态度&#xff0c;时代呼唤人人都应成为云原生开发者。 作者 | 丁宇&#xff08;叔同&#xff09;&#xff0c;阿里巴巴研究员&#xff0c;阿里云云原生应用平台负责人 对开发者而言&#xff0c;这是一个最…

如何玩转 WebGL 并行计算

简介&#xff1a; 如今在 Web 端使用 WebGL 进行高性能计算已有不少实践&#xff0c;例如在端智能领域中的 tensorflow.js&#xff0c;再比如可视化领域中的 Stardust.js。 作者 | 沧东 来源 | 阿里技术公众号 如今在 Web 端使用 WebGL 进行高性能计算已有不少实践&#xff0c…

oracle升级后出现 ora-02055,分布式更新失败 0ra-02055错误 请各位指点(在线等待)...

测试过程&#xff1a;1)在solaris上的数据库用户esm_symbian1上创建一个数据库连接2)在esm_symbian1用户创建database link 命名为symbian3)在远程的数据库用户mobile中创建表 send_mail4)在本地的数据库用户esm_symbian1中创建表 send_mail5)在本地esm_symbian1创建指向远程数…

数字孪生+交通,到底有啥用?

作者 | 小枣君来源 | 鲜枣课堂这些年来&#xff0c;信息技术的发展有了明显变化。以云计算、大数据、人工智能为代表的算力技术演进&#xff0c;以及以全光网络、4G/5G、Wi-Fi 6为代表的联接力技术飞跃&#xff0c;使得人们对数字技术提出了更高的期望。人们希望在信息化的基础…

万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机

简介&#xff1a; 「混合云IoT一体机」边缘部署、开箱即用、安全稳定、智管易用&#xff0c;通过定制软件和硬件相结合&#xff0c;预先定制、集成、测试和优化&#xff0c;实现快速部署和远程运维&#xff0c;并提升后续系统可用性和运维效率&#xff0c;是万物互联时代企业数…

kafka实现异步发送_Kafka Producer 异步发送消息居然也会阻塞?

Kafka 一直以来都以高吞吐量的特性而家喻户晓&#xff0c;就在上周&#xff0c;在一个性能监控项目中&#xff0c;需要使用到 Kafka 传输海量消息&#xff0c;在这过程中遇到了一个 Kafka Producer 异步发送消息会被阻塞的问题&#xff0c;导致生产端发送耗时很大。是的&#x…

adb zip linux 安装教程,centos下安装adb环境

1.安装adb&#xff0c;步骤如下 wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip unzip sdk-tools-linux-3859397.zip mkdir -p /opt/android/sdk/ mv tools /opt/android/sdk/ cd /opt/android/sdk touch ~/.android/repositories.cfg #若不创建此…

SmartNews:基于 Flink 加速 Hive 日表生产的实践

简介&#xff1a; 将 Flink 无缝地集成到以 Airflow 和 Hive 为主的批处理系统的技术挑战和应对方案。 本文介绍了 SmartNews 利用 Flink 加速 Hive 日表的生产&#xff0c;将 Flink 无缝地集成到以 Airflow 和 Hive 为主的批处理系统的实践。详细介绍过程中遇到的技术挑战和应…

今天来聊聊 Redis 的主从复制

作者 | 阿Q来源 | 阿Q说代码今天我们就从配置文件、设计原理、面试真题三个方面来聊一聊 Redis 的主从复制。在 Redis 复制的基础上&#xff0c;使用和配置主从复制非常简单&#xff0c;能使得从 Redis 服务器&#xff08;下文称 replica&#xff09;能精确的复制主 Redis 服务…

基于英特尔® 优化分析包(OAP)的 Spark 性能优化方案

简介&#xff1a; Spark SQL 作为 Spark 用来处理结构化数据的一个基本模块&#xff0c;已经成为多数企业构建大数据应用的重要选择。但是&#xff0c;在大规模连接&#xff08;Join&#xff09;、聚合&#xff08;Aggregate&#xff09;等工作负载下&#xff0c;Spark 性能会面…

表格长度_知道你的成绩单是怎么打印的吗?超长Excel表格1页打印,拯救A4纸

中小学的成绩单&#xff0c;红色的一张榜真实的魔鬼&#xff01;每次都得瞄半小时才找得到自己的全部科目成绩&#xff0c;不知道是不是为了节省A4纸~到了大学我才知道A4纸的珍贵&#xff0c;字小算什么&#xff0c;打印论文恨不得双面打印。要是能八号字打印更好了~到了工作的…

苹果电脑上使用linux环境变量,mac系统下修改环境变量

苹果电脑使用率越来越高&#xff0c;在mac系统下研发&#xff0c;性能要比在windows下快不少&#xff0c;既然要开发&#xff0c;免不了要配置环境变量.下面是学习啦小编收集整理的mac系统下修改环境变量&#xff0c;希望对大家有帮助~~mac系统下修改环境变量的方法工具/原料os…

提升代码质量的方法:领域模型、设计原则、设计模式

简介&#xff1a; 我们可以列举出非常多质量差的代码的表现现象&#xff0c;其中最影响代码质量的两个表现是命名名不副实、逻辑可扩展性差&#xff0c;当一个新人阅读代码时&#xff0c;有时发现方法命名与实际逻辑对不上&#xff0c;这就让人感到非常疑惑&#xff0c;这种现象…

SphereEx 完成近千万美元 Pre-A 轮融资,连接企业数据与应用,构建新一代数据库生态引擎

2022年1月4日&#xff0c;创新型数据库基础软件提供商 SphereEx 宣布完成近千万美元 Pre-A 轮融资&#xff0c;本轮融资由嘉御资本领投&#xff0c;红杉中国种子基金、初心资本、指数创投跟投。指数资本担任独家财务顾问。这是继 2021 年 5 月份以来&#xff0c;SphereEx 完成的…

python大列表分割成小列表_Python有什么方法将列表分割成大小均匀的块?求使用实例...

Python有什么方法将列表分割成大小均匀的块&#xff1f;求使用实例。我有一个任意长度的列表&#xff0c;我需要把它分成大小相等的块并对它进行操作。有一些很明显的方法可以做到这一点&#xff0c;比如保留一个计数器和两个列表&#xff0c;当第二个列表被填满时&#xff0c;…

40年技术发展变革,物联网行业的趋势、现状与挑战

简介&#xff1a; 40年技术发展变革&#xff0c;物联网行业的趋势、现状与挑战 基础设施的完善&#xff0c;推动应用形态不断变迁 我们把过去四十年分为五个重要的技术发展阶段&#xff0c;从时间轴上我们把它切分为&#xff1a;1980 - 2000&#xff0c;2000 - 2005&#xff…

Linux 6安装kde桌面,CentOS 5/6 安装 GNOME 或 KDE 桌面

1、安装 XWindowyum -y groupinstall X Window System2.1、Centos 5.x 安装 GNOME 或 KDE (可择一安装)GNOMEyum -y groupinstall GNOME Desktop EnvironmentKDEyum -y groupinstall KDE (K Desktop Environment)2.2、Centos 6.x 安装 GNOME 或 KDE (可择一安装)GNOMEyum -y gr…

Javascript 机器学习的四个层次

简介&#xff1a; Atwood定律说&#xff0c;凡是可以用Javascript实现的应用&#xff0c;最终都会用Javascript实现掉。作为最热门的机器学习领域&#xff0c;服务端是Python的主场&#xff0c;但是到了手机端呢&#xff1f;Android和iOS里默认都没有Python。但是有浏览器的地方…