美文网首页
Python3 & 异常

Python3 & 异常

作者: 乘风破浪的姐姐 | 来源:发表于2020-11-27 18:51 被阅读0次

一、错误
语法错误:使用 Pycharm 工具编写 Python 程序,编译器就会检测出来并给予提示,因此,编写好的程序几乎不会出现错误。
逻辑错误:编译器不会提示,例如:0作为被除数

二、异常
Python 程序语法正确,在运行时,有可能发生错误,运行期检测到的错误被称为异常;大多数的异常都不会被程序处理,会以错误信息的形式展现。
1、捕获所有异常
语法:

try:
可能发⽣错误的代码
except:
如果出现异常执⾏的代码

2、捕获指定异常
语法:

try:
可能发⽣错误的代码
except <异常名>:
 如果出现异常执⾏的代码

3、万能异常
语法:

try:
 可能发⽣错误的代码
except Exception:
 如果出现异常执⾏的代码

4、捕获多个异常
1)不区分优先级
语法:

try:
  可能发⽣错误的代码
except (<异常名1>, <异常名2>, ...):
  如果出现异常执⾏的代码

2)区分优先级
语法:

try:
   可能发⽣错误的代码
except <异常名1>:
    如果出现异常执⾏的代码1
except <异常名2>:
     如果出现异常执⾏的代码2
except <异常名3>:
    如果出现异常执⾏的代码3

该种异常处理语法的规则是:
执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

3)处理多个异常(没有捕获异常就执行else语句)
如果判断完没有某些异常之后还想做其他事,就可以使用else语句。
else 子句只能出现在所有 except 子句之后,只有在没有出现异常时执行。
语法:

try:
    可能发⽣错误的代码
except <异常名1>:
     如果出现异常执⾏的代码1
except <异常名2>:
     如果出现异常执⾏的代码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>:
     如果出现异常执⾏的代码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 <module>
   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 传入一个调用者不期望的值,即使值的类型是正确的

相关文章

  • Python异常处理(个人笔记)

    Python3 异常处理 捕获全部异常 各种异常清单 抛出异常 若想知道是否抛出了异常

  • 2018-10-08 Python21 异常、time模块

    异常处理-基本功能: Python3用元祖接收多个异常,Python2不用写圆括号。Python3用基类捕获所有异...

  • Python3异常

    while 1: try: num1 = input('输入被除数:') ...

  • Python3:异常

    概述 Python使用异常的特殊对象来管理程序执行期间发生的错误。 每当发生让Python不知所措的错误时,就会创...

  • Python3 & 异常

    一、错误语法错误:使用 Pycharm 工具编写 Python 程序,编译器就会检测出来并给予提示,因此,编写好的...

  • Python3 常见错误和异常处理

    Python3常见错误 异常名称描述解决方法BaseException所有异常的父类Python所有的错误都是从B...

  • 08-Python3 错误和异常

    一、Python3 错误和异常 Python有两种错误很容易辨认:语法错误和异常。 语法错误 Python 的语法...

  • Python3简明教程三

    这部分主要说明Python3的函数、文件操作以及一些常见的异常等。 来源:实验楼Python3简明教程 1. 函数...

  • js逆向 - pyexecjs 执行js编码异常

    pyexecjs执行js代码中含有中文会出现编码异常 File "C:\python3\lib\subproces...

  • python3异常处理

    异常处理语法 这样做的好处 如果使用了try,try里面的代码出现了异常只是不执行这些代码。而会继续执行后面的代码...

网友评论

      本文标题:Python3 & 异常

      本文链接:https://www.haomeiwen.com/subject/mwwliktx.html