一、错误

语法错误:使用 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 异常相关推荐

  1. python3 日志检索异常抛出异常 raise KeyError(key),KeyError: ‘formatters‘

    python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters' 参考文章: (1)python3 日志检索异常抛出异常 raise KeyE ...

  2. python中语法错误-Python3 错误和异常

    Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...

  3. Python3错误和异常

    一 .Python3 错误和异常              在Python有两种错误很容易辨认:语法错误和异常. 语法错误 Python 的语法错误或者称之为解析错,是新手经常碰到的. 异常 语法是正 ...

  4. python使用-Python3 错误和异常

    Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误 ...

  5. java异常——捕获异常+再次抛出异常与异常链

    java异常--捕获异常+再次抛出异常与异常链 参考文章: (1)java异常--捕获异常+再次抛出异常与异常链 (2)https://www.cnblogs.com/jpfss/p/9454592. ...

  6. python 抛出异常_python 异常

    目标 异常的概念 捕获异常 异常的传递 抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执行并且 ...

  7. Python3——文件与异常

    Python3--文件与异常 目录 Python3--文件与异常 文件 (1).打开文件open() (2).写文件write() (3).从文件读取数据 异常(防止程序崩溃) (1).try-exc ...

  8. 爱上MVC~业务层刻意抛出异常,全局异常的捕获它并按格式返回

    对于业务层的程序的致命错误,我们一直的做法就是直接抛出指定的异常,让程序去终断,这种做法是对的,因为如果一个业务出现了致命的阻塞的问题,就没有必要再向上一层一层的返回了,但这时有个问题,直接抛异常,意 ...

  9. java catch抛出异常_java异常——捕获异常+再次抛出异常与异常链

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--捕获异常+再次抛出异常与异常链 的相关知识: [1]捕获异常相关 1.1)如果 ...

最新文章

  1. Linux13-bash脚本编程基础及配置文件
  2. JavaScript设计模式--简单工厂模式例子---XHR工厂
  3. js字符串如何拼接java代码_JS如何定义用字符串拼接的变量
  4. 以列表形式输出_python格式化输出总结
  5. Java并发容器(一) CocurrentHashMap的应用及实现
  6. 来学习ansibie(1)
  7. Sublime text 2下alignment插件无效的解决办法
  8. Android之ViewDragHelper
  9. wx.checkjsapi 一直显示ok_Python下调用json.dumps中文显示问题及解决办法
  10. Bipartite Segments CodeForces - 901C (区间二分图计数)
  11. Thread.Sleep太久,界面卡死
  12. 3 手风琴翻折效果_vue3+typeScript 手风琴(每周一个小组件)
  13. linux安装vlan管理软件,Linux_Linux下配置vlan网卡教程,1.需要使用到vconfig软件。首先y - phpStudy...
  14. 自由软件运动与GNU项目
  15. tp3.2中前台模板中日期时间的转换
  16. 2020-2021读书记录
  17. STM32操作增量式编码器(一)----使用外部中断实现测速
  18. Consul4-linux安装consul以及集群搭建
  19. 安卓逆向——刷机Pixel2 ROOT
  20. 容错对于游戏体验的重要性

热门文章

  1. 全球最大最干净的人脸公开训练集!格灵深瞳发布Glint360K
  2. 强强联合!Papers with Code 携手 arXiv,上传论文、提交代码一步到位
  3. 百面机器学习之特征工程
  4. 爬虫之常用数据解析方法
  5. 物联网的层次结构如何划分?
  6. 计算机网络分类(按覆盖范围分类)“名称、范围”
  7. 算法工程师面试必考项——链表
  8. 常用特征工程方法总结
  9. 使用OpenCV实现车道线检测
  10. Im2Mesh GAN:从一张RGB图像中恢复3D手部网格