1.1.异常的概念

程序在运行时,如果python解释器遇到一个错误,会停止程序的运行,并且提示一些错误信息,这就是异常

程序停止执行并且提示错误信息后这个动作,我们通常称之为:抛出异常

程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性

一段代码:

num = int(input("请输入数字:"))

print('hello')

如果我们输入非数字,输出:

请输入数字:s

Traceback (most recent call last):

File "C:/Users/Administrator/PycharmProjects/untitled16/ex.py", line 6, in

num = int(input("请输入数字:"))

ValueError: invalid literal for int() with base 10: 's'

1.发生错误2.程序终止---hello没有输出

1.2.捕获异常

1.2.1.简单的捕获异常语法

在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常

捕获异常最常见的语法格式:

try:

尝试执行的代码

except:

出现错误的处理

try 尝试,下方编写要尝试代码,不确定是否能够正常执行的代码

except 如果不是,下方编写尝试失败的代码

简单异常捕获演练--要求用户输入整数

try:

#提示用户输入一个数字

num = int(input("请输入数字:"))

except:

print("请输入正确的数字")

print('hello')

输入非数字:

请输入数字: r

请输入正确的数字

hello

程序没有终止,输出了hello

1.2.2.错误类型捕获

在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了

语法如下:

try:

#尝试执行的代码

pass

except 错误类型1:

#针对错误类型1,对应的代码处理

pass

except (错误类型2,错误类型3):

#针对错误类型2和3,对应的代码处理

pass

except Exception as result:

print("未知错误 %s" % result)

当python解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型

异常类型捕获演练--要求用户输入整数

需求

1.提示用户输入一个整数

2.使用8除以用户输入的整数并且输出

try:

num = int(input("请输入整数:"))

result = 8 / num

print(result)

except ValueError:

print("请输入正确的整数")

except ZeroDivisionError:

print("除0错误")

捕获未知错误

在开发时,要预判到所有可能出现的错误,还是有一定难度的

如果希望程序无论出现任何错误,都不会因为python解释器抛出异常而被终止,可以再增加一个except

语法如下:

except Exception as result:

print("未知错误 %s" % result)

1.2.3.异常捕获完整语法

在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:

提示:

有关完整语法的应用场景,在后续学习中,结合实际的案例会更好理解

现在先对这个语法结构有个印象即可

try:

# 尝试执行的代码

pass

except 错误类型1:

# 针对错误类型1,对应的代码处理

pass

except 错误类型2:

# 针对错误类型2,对应的代码处理

pass

except (错误类型3, 错误类型4):

# 针对错误类型3 和 4,对应的代码处理

pass

except Exception as result:

# 打印错误信息

print(result)

else:

# 没有异常才会执行的代码

pass

finally:

# 无论是否有异常,都会执行的代码

print("无论是否有异常,都会执行的代码")

else只有在没有异常时才会执行的代码

finally无论是否有异常,都会执行的代码

之前一个演练的完整捕获异常的代码如下:

try:

num = int(input("请输入整数:"))

result = 8 / num

print(result)

except ValueError:

print("请输入正确的整数")

except ZeroDivisionError:

print("除0错误")

except Exception as result:

print("未知错误 %s" % result)

else:

print("正常执行")

finally:

print("执行完成,但是不保证正确")

1.3.异常处理

异常的传递--当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方

如果传递到主程序,仍然没有异常处理,程序才会被终止

提示:

在开发中,可以在主函数中增加异常捕获

而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中

这样就不需要在代码中,增加大量的异常捕获,能够保证代码的症结

需求:

1.定义函数demo1()提示用户输入一个整数并且返回

2.定义函数demo2()调用demo1()

3.在主程序中调用demo2()

def demo1():

return int(input("请输入一个整数:"))

def demo2():

return demo1()

try:

print(demo2())

except ValueError:

print("请输入正确的整数")

except Exception as resutlt:

print("未知错误 %s" % result)

1.4.抛出raise异常

1.4.1.应用场景

在开发中,除了代码执行出错python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常

示例

提示用户输入密码,如果长度小于8,抛出异常

注意

当前函数只负责提示提示用户名输入密码,如果密码长度不正确,需要其他的函数进行额外处理

因此可以抛出异常,由其他需要处理的函数捕获异常

1.4.2.抛出异常

python中提供了一个Exception异常类

在开发中,如果满足特定业务需求时,希望抛出异常,可以:

1.创建一个Exception的对象

2.使用raise关键字抛出一场对象

需求

定义input_password函数,提示用户输入密码

如果用户输入长度<8,抛出异常

如果用户输入长度>=8,返回输入的密码

def input_password():

#1\.提示用户输入密码

pwd = input("请输入密码:")

#2\.判断密码长度,如果长度>=8,返回用户输入的密码

if len(pwd) >= 8:

return pwd

#3\.密码长度不够,需要抛出异常

#1>创建异常对象-使用异常的错误信息字符串作为参数

ex = Exception("密码长度不够")

#2>抛出异常对象

raise ex

try:

user_pwd = input_password()

print(user_pwd)

except Exception as result:

print("发现错误:%s" % result)

1.5.自定义异常

自定义异常主要是自己定义的异常类,对异常进行分门别类管理,自定义异常需要继承异常父类Exception一个例子

class MyException(Exception): #让MyException类继承Exception

def __init__(self,name,age):

self.name = name

self.age = age

try:

#知识点:主动抛出异常,就是实例化一个异常类

raise MyException("zhangsan",19) #实例化一个异常,实例化的时候需要传参数

except MyException as obj: #这里体现一个封装

print(obj.age,obj.name) #捕获的就是MyException类携带过来的信息

except Exception as obj: #万能捕获,之前的可能捕获不到,这里添加Excetpin

print(obj)

python程序异常处理输入整数_python_异常处理相关推荐

  1. 学生的基本信息包括学号、姓名、成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息。

    学生的基本信息包括学号.姓名.成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息. 代码如下: #include<stdio.h>s ...

  2. python编程输入标准-Python中的输入与输出

    一.计算机核心 1.计算机的三大核心为 输入.计算.输出: 2.程序就是指令的集合: 二.python输入与输出 1.简单的来说python作为一种语言,可以编写脚本和程序,那么python就具备输入 ...

  3. 如何在linux下运行python程序

    要编辑一个new_python的python程序文件,输入如下命令: $pico new_python        (注:可以用vim直接编辑.) 输入如下测试代码: #!/usr/bin/env ...

  4. python编程第一程序_第一个Python程序_Python编程开发教程

    第一个Python程序 用notepad++编写程序代码 语言设置为python(高量显示函数和关键字)(注意:行首不能有空格,Python对缩进要求严格) 命令提示符运行 cd \文件名 #打开py ...

  5. python异常处理输入不是整数_Python异常处理大全(二)

    本文是Python异常处理教程的第二部分,上部分我们简单的介绍了几种异常,及其处理办法,这部分我们将更详细地对Python中产生的异常处理方法进行探讨. 函数使用异常 看看这个: 如果some_fun ...

  6. python异常处理输入不是整数_Python异常处理

    异常处理: Python程序运行语法出错会有异常抛出不处理异常会导致程序终止 示例:用户输入一个整数转换成int型,如果用户输入的不是数字而是其他例如字母等则会出现异常 不使用异常处理代码的处理方法 ...

  7. python异常处理输入不是整数_【Python】异常处理

    异常处理 内容概要 异常的概念 捕获异常 异常的传递 抛出异常 01.异常的概念 程序在运行的时候,遇到错误导致程序停止运行时,这就是异常. 程序停止运行,并且提示错误信息这个动作,我们称为:抛出(r ...

  8. Python程序异常处理:try、except、else、finally,捕获指定异常类型、捕获多个异常类型、捕获所有异常类型、捕获异常信息、异常的传递、raise抛出自定义异常

    输入与预期不匹配,触发异常,程序退出: 一.异常处理:使用try.except进行错误处理 为了保证程序运行的稳定性,错误应该被程序捕捉并合理控制 Python使用保留字try和except进行异常处 ...

  9. python程序结构和异常处理

    (一)程序结构和异常处理 (二)迭代和生成器 (三)函数式编程 本篇文章学习的内容是第一篇,目录如下: 01 程序结构 1.1  模块Module 1)定义 python中的模块指的是 包含一系列数据 ...

最新文章

  1. python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
  2. linux while read文件,linux shell脚本用while read逐行读取文本的问题
  3. 信息学奥赛一本通C++语言——1063:最大跨度值
  4. CubeMX配置串口的程序烧入板子不跑的解决方法
  5. JTable 的使用
  6. 快速打开 Mac OS X 隐藏的用户资源库文件夹
  7. Python入门学习资料分享
  8. Android 在 Fragment 中使用 getActivity() NullPointException 的思考和解决办法
  9. P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)
  10. 封闭实验的对称不变性——思想实验推导狭义相对论(五)
  11. 《炬丰科技-半导体工艺》激光增强湿法蚀刻制造的大规模高质量玻璃微透镜阵列
  12. LaTeX代码: 在PPT中插入图片 ← 利用 beamer 宏包
  13. 论文阅读:Seg4Reg+: Consistency Learning Between Spine Segmentation and Cobb Angle Regression
  14. idea自定义banner
  15. BP神经网络理解及公式推导
  16. 弘辽科技:淘宝新店扶持是人人享有的权益吗?
  17. 1982年版《茶馆》内容简要回顾
  18. PCB布局、布线总结(持续进行中。。。。。。)
  19. css引入自定义字体/特殊字体/ttf格式语言包
  20. 积分计算曲线围绕X轴旋转形成的立体体积

热门文章

  1. 使用awstats分析nginx日志
  2. electron-builder配置
  3. [GIS原理] 10 空间统计分析
  4. 三、mysql 存储引擎-建库建表操作
  5. 站在时代风口,AI和区块链哪一个会是大势所趋?文末免费送书哦
  6. matlab怎样返回前一步,执行完宏怎样恢复上一步
  7. 关于技术面试,面试官会怎么考察?我列了这几点
  8. elasticsearch实践篇: 智能运输产品
  9. 微博上一曲绝唱,长这么大没听过这么感动的歌
  10. 【多线程】浅说Synchronized