python3 抛出异常_Python3 异常
一、错误
语法错误:使用 Pycharm 工具编写 Python 程序,编译器就会检测出来并给予提示,因此,编写好的程序几乎不会出现错误。
逻辑错误:编译器不会提示,例如:0作为被除数
二、异常
Python 程序语法正确,在运行时,有可能发生错误,运行期检测到的错误被称为异常;大多数的异常都不会被程序处理,会以错误信息的形式展现。
1、捕获所有异常
语法:
try:
可能发⽣错误的代码
except:
如果出现异常执⾏的代码
2、捕获指定异常
语法:
try:
可能发⽣错误的代码
except :
如果出现异常执⾏的代码
3、万能异常
语法:
try:
可能发⽣错误的代码
except Exception:
如果出现异常执⾏的代码
4、捕获多个异常
1)不区分优先级
语法:
try:
可能发⽣错误的代码
except (, , ...):
如果出现异常执⾏的代码
2)区分优先级
语法:
try:
可能发⽣错误的代码
except :
如果出现异常执⾏的代码1
except :
如果出现异常执⾏的代码2
except :
如果出现异常执⾏的代码3
该种异常处理语法的规则是:
执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
3)处理多个异常(没有捕获异常就执行else语句)
如果判断完没有某些异常之后还想做其他事,就可以使用else语句。
else 子句只能出现在所有 except 子句之后,只有在没有出现异常时执行。
语法:
try:
可能发⽣错误的代码
except :
如果出现异常执⾏的代码1
except :
如果出现异常执⾏的代码2
else:
# try语句中没有异常则执行此段代码
5、无论是否检测到异常,都会执行finally代码
1)try_finally 无论是否检测到异常,都会执行finally代码,主要为异常处理事件提供清理机制,用来关闭文件或者释放系统资源。
语法:
try:
可能发⽣错误的代码
finally:
要执行此段代码
2)try-except-finally使用
1.若try语句没有捕获异常,执行完try代码段后,执行finally
2.若try捕获异常,首先执行except处理错误,然后执行finally
finally 子句放在最后,无论是否出现异常都会执行。
语法:
try:
可能发⽣错误的代码
except :
如果出现异常执⾏的代码1
finally:
要执行此段代码
3)try-except-else-finally使用
没有异常 try->else->finally
有异常 try->expect->finally
语法:
try:
可能发⽣错误的代码
except :
如果出现异常执⾏的代码
else:
# try语句中没有异常则执行此段代码
finally:
要执行此段代码
6、raise主动触发异常
可以使用raise语句自己触发异常,raise语法格式如下:
raise [Exception [, args [, traceback]]]
使用 raise 语句允许强制抛出一个指定的异常,要抛出的异常由 raise 的唯一参数标识,它必需是一个异常实例或异常类(继承自 Exception 的类)。
示例:
def not_zero(num):
try:
if num == 0:
raise ValueError('参数错误')
return num
except Exception as e:
print(e)
not_zero(0)
7、采用traceback模块查看异常
语法:
try:
可能发⽣错误的代码
except:
traceback.print_exc()
示例:
try:
1/0
except Exception as e:
print(e)
这样就会帮我们追溯到出错点:
Traceback (most recent call last):
File "E:/workspaces/python/pythondemo/test/test2/异常.py", line 16, in
1 / 0
ZeroDivisionError: division by zero
8、自定义异常
在Python中,抛出⾃定义异常的语法为 raise 异常类对象 。
示例:
# ⾃定义异常类,继承Exception
class ShortInputError(Exception):
def __init__(self, length, min_len):
self.length = length
self.min_len = min_len
# 设置抛出异常的描述信息
def __str__(self):
return f'你输⼊的⻓度是{self.length}, 不能少于{self.min_len}个字符'
def main():
try:
con = input('请输⼊密码:')
if len(con) < 3:
raise ShortInputError(len(con), 3)
except Exception as result:
print(result)
else:
print('密码已经输⼊完成')
main()
输出结果:
请输⼊密码:2
你输⼊的⻓度是1, 不能少于3个字符
9、常见异常种类
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
python3 抛出异常_Python3 异常相关推荐
- python3 日志检索异常抛出异常 raise KeyError(key),KeyError: ‘formatters‘
python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters' 参考文章: (1)python3 日志检索异常抛出异常 raise KeyE ...
- python中语法错误-Python3 错误和异常
Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...
- Python3错误和异常
一 .Python3 错误和异常 在Python有两种错误很容易辨认:语法错误和异常. 语法错误 Python 的语法错误或者称之为解析错,是新手经常碰到的. 异常 语法是正 ...
- python使用-Python3 错误和异常
Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...
- java异常——捕获异常+再次抛出异常与异常链
java异常--捕获异常+再次抛出异常与异常链 参考文章: (1)java异常--捕获异常+再次抛出异常与异常链 (2)https://www.cnblogs.com/jpfss/p/9454592. ...
- python 抛出异常_python 异常
目标 异常的概念 捕获异常 异常的传递 抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执行并且 ...
- Python3——文件与异常
Python3--文件与异常 目录 Python3--文件与异常 文件 (1).打开文件open() (2).写文件write() (3).从文件读取数据 异常(防止程序崩溃) (1).try-exc ...
- 爱上MVC~业务层刻意抛出异常,全局异常的捕获它并按格式返回
对于业务层的程序的致命错误,我们一直的做法就是直接抛出指定的异常,让程序去终断,这种做法是对的,因为如果一个业务出现了致命的阻塞的问题,就没有必要再向上一层一层的返回了,但这时有个问题,直接抛异常,意 ...
- java catch抛出异常_java异常——捕获异常+再次抛出异常与异常链
[0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--捕获异常+再次抛出异常与异常链 的相关知识: [1]捕获异常相关 1.1)如果 ...
最新文章
- Linux13-bash脚本编程基础及配置文件
- JavaScript设计模式--简单工厂模式例子---XHR工厂
- js字符串如何拼接java代码_JS如何定义用字符串拼接的变量
- 以列表形式输出_python格式化输出总结
- Java并发容器(一) CocurrentHashMap的应用及实现
- 来学习ansibie(1)
- Sublime text 2下alignment插件无效的解决办法
- Android之ViewDragHelper
- wx.checkjsapi 一直显示ok_Python下调用json.dumps中文显示问题及解决办法
- Bipartite Segments CodeForces - 901C (区间二分图计数)
- Thread.Sleep太久,界面卡死
- 3 手风琴翻折效果_vue3+typeScript 手风琴(每周一个小组件)
- linux安装vlan管理软件,Linux_Linux下配置vlan网卡教程,1.需要使用到vconfig软件。首先y - phpStudy...
- 自由软件运动与GNU项目
- tp3.2中前台模板中日期时间的转换
- 2020-2021读书记录
- STM32操作增量式编码器(一)----使用外部中断实现测速
- Consul4-linux安装consul以及集群搭建
- 安卓逆向——刷机Pixel2 ROOT
- 容错对于游戏体验的重要性