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. 能直接复制图片中文字,功能远超普通OCR软件,MIT学生开发了一款强大Chrome插件...
  2. Ubuntu 16.04编译安装OpenCV(Python)
  3. python 语句简写_自学Python-语句之列表推导式
  4. 雷军的手机屏保亮了,网友哭笑不得:我还以为是董明珠呢!
  5. java 动手动脑
  6. 【招聘内推】推荐策略产品经理-阿里文娱优酷产品直招
  7. 《音频、图像及视频技术》学习笔记
  8. aes 结尾 特殊字符_乔迁庆典主持词开头及结尾
  9. 【WPF-HelixToolkit】史陶比尔RX160L 机器人仿真器源码学习
  10. TASKCTL作业类型的插件与维护管理
  11. 17年前那场疫情:马云隔离在家,刘强东关了12家店,俞敏洪欠债700万......
  12. linux 电驴,开源电驴 MLDonkey 3.0.7 发布
  13. 计算机英语带字幕,计算机专业英语听力字幕.doc
  14. 谷歌drive收费_Google Drive的系统设计分析
  15. 《程序员的自我修养》笔记
  16. jQuery下(2nd)
  17. 面试最后总会问到的开放性面试题
  18. vlookup反向查询_VLOOKUP的反向查找功能
  19. LeetCode 518 Coin Change 2 (python)
  20. Codeforces 19E Fairy

热门文章

  1. Nginx配置、原理学习
  2. 《质量三人行》第一季完结
  3. 中职c语言程序设计案例教学,中职C语言教学中案例教学法新探.doc
  4. unity代码更换ui图片_Unity UI图片的一种优化方式
  5. 用于主动学习的顺序图卷积网络(论文解读)
  6. 两个音轨合并_Guitar Pro 7教程之将多音轨合并为一个音轨
  7. TIPTOP ——AQC质量管理模块内容
  8. libevent与libev简介
  9. 【5.20_专辑】来聊聊程序猿的那些花式表白
  10. 运行一个函数,其中的变量自动加一(python)