广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3-抛出、捕获异常
  • 350
分享到

python3-抛出、捕获异常

抛出异常 2023-01-31 02:01:51 350人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类: 1.语法错误(运行前进行判定和修正) 2.逻


'''
异常:错误发生的信号,程序随之终止

三个部分:
    1.traceback 异常的追踪信息(链接)
    2.异常的类型
    3.异常信息

错误两大类:
    1.语法错误(运行前进行判定和修正)
    2.逻辑错误

异常种类:
    AttributeError 属性错误
        试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
    ioError 输出错误
        输入/输出异常;基本上是无法打开文件
    ImportError 模块导入错误
        无法引入模块或包;基本上是路径问题或名称错误
    IndentationError 缩进错误
        语法错误(的子类) ;代码没有正确对齐
    IndexError 索引错误
        下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    KeyError 关键字错误
        试图访问字典里不存在的键
    KeyboardInterrupt 键盘中断错误
        Ctrl+C被按下
    NameError 名称错误
        使用一个还未被赋予对象的变量
    SyntaxError 语法错误
        python代码非法,代码不能编译(个人认为这是语法错误,写错了)
    TypeError 类型错误
        传入对象类型与要求的不符合
    UnboundLocalError 局部变量错误
        试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
    ValueError 值错误
        传入一个调用者不期望的值,即使值的类型是正确的

异常处理:
    #基本语法为
    try:
        被检测的代码块
    except 异常类型 as 别名: #别名用来去除异常的值
        try中一旦检测到异常后,执行的代码块。
    else:
        没有异常时执行
    finally:
        无论异常与否,都会执行该模块,通常是进行清理工作

    try:
        代码块1
        代码块2
        ……
    except StopIteration:
        代码块
        ……
    else:
        代码块
        ……
    finally:
        代码块
        ……

断言:assert 条件语句
    如果满足断言条件,继续运行;如果不满足,抛出异常(AssertionError)
'''


# 1.指定异常捕捉(单分支)
try:
    print('========>1')
    print('========>2')
    l = [1, 2, 3]
    l[100]  # IndexError
    # 异常被捕捉,不执行try下后续代码块
    print('========>3')
    d = {'x': 1, 'y': 2}
    d['z']  # KeyError
    print('========>4')
except IndexError as ie:
    print('IndexError',ie)

print('other code')

# 2.异常处理多分支
try:
    print('========>1')
    print('========>2')
    d = {'x': 1, 'y': 2}
    d['z']  # KeyError

    print('========>3')
    l = [1, 2, 3]
    l[100]  # IndexError
    print('========>4')

except IndexError as ie:
    print('IndexError',ie)
except KeyError as ke:
    print('KeyError',ke)
# 同上
except (IndexError,KeyError) as e:
    print('Error',e)

print('other code')

# 3.万能异常 Exception:可以匹配任意类型的异常
try:
    print('========>1')
    print('========>2')
    d = {'x': 1, 'y': 2}
    d['z']  # KeyError

    print('========>3')
    l = [1, 2, 3]
    l[100]  # IndexError
    print('========>4')

except Exception as e:
    print('Error',e)

print('other code')

# 4.万能异常+多分支,实现指定错误指定处理。即:万能异常放最后捕获
try:
    print('========>1')
    print('========>2')
    d = {'x': 1, 'y': 2}
    d['z']  # KeyError

    print('========>3')
    l = [1, 2, 3]
    l[100]  # IndexError
    print('========>4')

except IndexError as ie:
    print('IndexError',ie)
except KeyError as ke:
    print('KeyError',ke)
except Exception as e:
    print('Error',e)

print('other code')

# 5.else和finally的使用和区别
try:
    print('========>1')
    print('========>2')
    d = {'x': 1, 'y': 2}
    d['z']  # KeyError

    print('========>3')
    l = [1, 2, 3]
    l[100]  # IndexError
    print('========>4')

except IndexError as ie:
    print('IndexError',ie)
except KeyError as ke:
    print('KeyError',ke)
except Exception as e:
    print('Error',e)
else:
    print('else')
finally:
    print('finally')

print('other code')

# 6.主动抛出异常
raise  TypeError('类型错误')


# 7.触发异常
try:
    raise TypeError('类型错误')
except Exception as e:
    print(e)

# 8.自定义异常
class MyException(BaseException):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

try:
    raise MyException('类型错误')
except MyException as me:
    print(me)

# 断言:assert 条件语句
    # 如果满足断言条件,继续运行;如果不满足,抛出异常(AssertionError)
print('1111')
l = [1,2,3,]
assert len(l)>5
print('22222222')

# 捕获异常
class People:
    def __init__(self,name,age):
        self.__name = name
        self.__age = age

    def get_interface(self):
        print(self.__name,self.__age)
    def set_inter(self,name,age):
        try:
            if not isinstance(name,str):
                raise TypeError('名字必须是str类型')
            if not isinstance(age,int):
                raise TypeError('年龄必须是int类型')
        except TypeError as te:
            print(te)
            return te
        self.__name = name
        self.__age = age


p1 = People(100,100)
p1.get_interface()

p1.set_inter(110,101)
p1.get_interface()

p1.set_inter('name1','age1')
p1.get_interface()

p1.set_inter('name2',19)
p1.get_interface()

 

--结束END--

本文标题: python3-抛出、捕获异常

本文链接: https://www.lsjlt.com/news/185857.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3-抛出、捕获异常
    ''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类: 1.语法错误(运行前进行判定和修正) 2.逻...
    99+
    2023-01-31
    抛出 异常
  • C++中的异常抛出和捕获方式
    目录C++ 中的异常语法抛出类型声明栈自旋在 C 语言中,如果发生错误,上级函数要进行出错处理,层层上传,容易造成过多的出错处理代码,并且传递的效率比较低下。 C++ 中的异常 C+...
    99+
    2022-11-13
  • Go语言错误处理异常捕获+异常抛出
    目录一、error变量可以做什么1.定义一个error变量2.错误的处理3.做函数返回值4.做函数参数二、模拟异常的捕获与抛出1.defer简介2.使用recover模拟异常的捕获3...
    99+
    2022-11-13
  • oracle抛出异常和捕获异常的方法是什么
    在Oracle中,抛出异常和捕获异常的方法是通过使用PL/SQL代码块来实现的。1. 抛出异常:在PL/SQL代码块中,可以使用关键...
    99+
    2023-10-20
    oracle
  • Java中抛出异常和捕获异常有什么区别
    这篇文章主要介绍Java中抛出异常和捕获异常有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!抛出异常:创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。不对异常进行处理只对异常进行抛出是非常...
    99+
    2023-06-15
  • 浅谈抛出异常和捕获异常的一些区别
    小总结 抛出异常: 创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。 不对异常进行处理只对异常进行抛出是非常不负责任的表现可以称为渣男。 但是可以通过主动抛出异常...
    99+
    2022-11-12
  • Java异常分类处理抛出捕获操作详解
    目录什么是异常1.算术异常2.数组越界异常3.空指针异常异常的分类异常的抛出(throw关键字)异常的捕获throws关键字try catch关键字finally关键字总结什么是异常...
    99+
    2022-11-13
  • 捕获异常然后再抛出另一个异常的正确姿势
    一般实现捕获异常然后再抛出另一个异常的方法类似下面这样: def div(): 2 / 0 try: div() except ZeroDivisionError as e: raise ValueError(e...
    99+
    2023-01-31
    异常 然后再 抛出
  • Python3的异常捕获和处理
    1.try 和 except 这是异常语句。使用了这个可以对报错的代码,也会继续 执行下去而不会报错,不执行后面的代码。try是捕获异常,在try里的代码执行如果出错后,就会执行在execpt里的代码。try: print(2/0)...
    99+
    2023-01-31
    异常
  • JS调用C++函数抛出异常及捕捉异常详解
    目录总结本文讲述如何利用v8::TryCatch捕捉js代码中发生的异常。 首先,声明TryCatch对象。 v8::TryCatch trycatch( isolate ); ...
    99+
    2022-11-12
  • java怎么捕获异常
    在Java中,凡是可能抛出异常的语句,都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中,然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语句,每个catc...
    99+
    2018-06-21
    java教程 java
  • 详解pythonThreadPoolExecutor异常捕获
    目录解决方法1:解决方法2:python ThreadPoolExecutor线程池的工作线程中出现异常时,主线程不会捕获异常。 解决方法1: 直接在需要执行的任务方法中添加try:...
    99+
    2023-01-29
    python ThreadPoolExecutor异常捕获 python ThreadPoolExecutor
  • Android 记录未捕获异常
    文章目录一、CrashHandler二、初始化三、测试四、打印 stackTrace 一、CrashHandler 自定义 Crash 处理器:...
    99+
    2022-06-06
    异常 捕获 Android
  • 2011-11-21 未捕获异常
    http://www.itpub.net/thread-1499223-17-1.html 167楼 下列哪些选项在执行之后会导致未捕获的异常: ORA-06502: PL/SQL:&nb...
    99+
    2022-10-18
  • 详解python的异常捕获
    目录①捕捉一个异常②捕捉多个异常③Exception捕捉所有异常④raise主动触发异常⑤try…except…else…finally逻辑...
    99+
    2022-11-13
  • Python多层异常的捕获
    参考: 1、https://mozillazg.github.io/2016/08/python-the-right-way-to-catch-exception-then-reraise-another-exception.h...
    99+
    2023-01-31
    多层 异常 Python
  • 浅谈python抛出异常、自定义异常, 传递异常
    一. 抛出异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行...
    99+
    2022-06-04
    异常 自定义 浅谈
  • java异常处理throws完成异常抛出详解
    已检查异常抛出 对于已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译。但调用的方法没有能力处理这种异常,对于这种情况,...
    99+
    2022-11-12
  • python自定义异常和主动抛出异常(r
    有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python解释器是不知道用户自定义异常是什么鬼的。 主动抛出异常。 格式: 主动抛出异常终止...
    99+
    2023-01-31
    异常 自定义 抛出
  • 抛出异常时将异常信息返给前端
      全局异常处理器负责将抛出的异常,以统一的格式返给前端。在这里起主要作用的注解是@RestControllerAdvice。 @RestControllerAdvice主要配合@ExceptionHandler使用,统一处理异常情况。 1...
    99+
    2023-09-08
    前端 mybatis java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作