什么是异常?

Python无法正常处理程序时就会发生一个异常,这时Python就会抛出一个对象,表示这是一个错误。

必须处理异常,否则程序可能会停止运行,或者出现异常现象。

:4/0就会抛出异常,因为除数不可以为0。
:a=[1,2,3],访问a[10]就会抛出异常,因为下标超出了范围(0~2)。

示例:

a=[1,2,3]
print(a[10])

抛出异常:


常见异常

ImportError           # 引入模块错误,大部分是路径问题或名称错误。
ModuleNotFoundError # 模块不存在
IOError # 输入输出异常,大部分是无法打开文件
FileNotFoundError # 文件不存在
KeyError # 访问字典里不存在的键
ZeroDivisionError # 除(或取模)零
NameError # 变量未定义
TypeError # 实参的类型与要求的不符(如time.sleep("1"))
ValueError # 实参的值与要求的不符,即使类型正确(如int("one"))
IndexError # 下标越界

小贴士:

Python中存在许许多多的异常,具体情况具体处理。


捕获并处理异常

程序抛出异常后,可能会停止运行。因为程序毕竟是程序,不够智能,并不会处理它们。

程序会根据不同的情况,抛出不同的异常。

需要捕获相应的异常并进行处理,程序才会正常的运行下去。

综上所述,提前用代码告知Pyton,出现各种异常该如何处理。

try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print("文件打开失败:",fileNotFoundError)
except: #其他错误
print("其他错误")

解释:

  • 在try语句块中执行可能发生错误的代码
  • 使用except来捕获异常
  • FileNotFoundError是异常名,表示文件不存在
  • fileNotFoundError为对象名,可自定义,通过此对象来处理异常
  • 当文件不存在,异常就会被fileNotFoundError捕获
  • 出现其他错误,就会输出:其他错误

手动抛出异常

手动抛出异常,再捕获异常,进行处理。
如:需要用户输入数字,用户却输入了字符

age=input("请输入年龄:")
if not age.isdigit():
raise ValueError("值错误")

若发生异常:

若没有发生异常:

解释:

  • 使用关键字raise抛出异常
  • 抛出异常ValueError
  • 上例没有对异常进行捕获处理,只是抛出。
  • 有些异常发生时,程序不会停止运行,如ValueError(退出码为0)
手动抛出异常,并捕获、处理异常:
try:
age=input("请输入年龄:")
if not age.isdigit():
raise ValueError("值错误")
except ValueError as valueError:
print(valueError)
exit(1)

若发生异常:

若没有发生异常:


自定义异常

  • 所有的异常都是Exception或Exception的子类
  • 继承Exception,成为它的子类,即为自定义异常。
class MyError(Exception):       #继承了Exception
def __init__(self,value): #构造函数
self.value=value
def __str__(self): #强制转换
return str(self.value)
try:
raise MyError("我的错误") #抛出异常
except MyError as myError: #捕获异常
print(myError) #处理异常

try-else

  • 当try块中没有发生异常,就会执行else语句块
try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print(fileNotFoundError)
else:
print("没有发生错误")

try-finally

  • 无论是否发生异常都将执行finally语句块
try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print(fileNotFoundError)
finally:
print("无论是否异常,都会输出")

07-Python异常处理的更多相关文章

  1. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  2. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  3. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  4. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  5. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  6. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  7. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  8. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  9. python异常处理与断言以及日志模块

    python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...

  10. python 异常处理函数--raise

    Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...

随机推荐

  1. CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数

    CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数 背景 测试CMSInitiatingOccupancyFraction参数,测试结果和我的预期不符,所以花了一 ...

  2. vue03 01.vite创建项目

    目录 01.创建项目 打包工具 vite介绍 安装命令 安装项目依赖 启动项目 浏览效果 代码目录 打包 预览运行 插件使用 编辑器 01.创建项目 打包工具 vite官网 vite创建项目 vite ...

  3. 在IDEA中配置GitHub

    目录 在IDEA中配置GitHub 安装GitHub插件 账号授权 方法一:点击Add Account... 添加账号 方法二:使用token登录 共享到GitHub 查看文件变更列表 add文件 移 ...

  4. Go类型断言demo

    Go类型断言demo package main import ( "bytes" "encoding/json" "fmt" "i ...

  5. 包含Symbol类型的对象遍历取key使用Reflect.ownKeys

    Reflect.ownKeys(target)等同于 Object.getOwnPropertyNames 与Object.getOwnPropertySymbols 之和

  6. The attempt was made from the following location: com.ruoyi.framework.config.ResourcesConfig.corsFilter(ResourcesConfig.java:57)

    报错信息: 8:42:12.529 [restartedMain] ERROR o.s.b.w.e.t.TomcatStarter - [onStartup,61] - Error starting ...

  7. RestTemplate 介绍和用法

    RestTemplate 简介 RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求.POST 请求.PUT ...

  8. Django 视图views的基本使用

    在 Django 中,视图函数是一个 Python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑.视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 HTML ...

  9. 【2023全网最全最火】Selenium WebDriver教程(建议收藏)

    在本教程中,我将向您介绍 Selenium Webdriver,它是当今市场上使用最广泛的自动化测试框架.它是开源的,可与所有著名的编程语言(如Java.Python.C#.Ruby.Perl等)一起 ...

  10. .Net Core 静态类获取注入服务

    由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取 1.首先创建一个静态类 using Microsoft ...