精华内容
下载资源
问答
  • 2019-03-15 21:40:52
    try:
        print('正常执行')
        # 根据业务逻辑判断,需要手动抛出异常
        raise Exception(print(a))
        #raise Exception('print(a)')#注意这两个的区别,这个带字符串,直接打印字符串里的内容,python把字符串的内容一字不差解析成了异常并打印出来
        print('正常结束')
    except Exception as e:
        print('出现异常:', e)
    
    print('OVER')
    更多相关内容
  • python抛异常异常传递

    千次阅读 2022-02-10 21:14:35
    Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动出。 使用raise语句异常: 1.使用异常类引发异常 格式如下: raise 异常类 #格式1:使用异常类名引发指定的异常 ...

     抛出异常:

    Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。

    使用raise语句抛出异常:

    1.使用异常类引发异常

    格式如下:

    raise 异常类  #格式1:使用异常类名引发指定的异常

    示例如下所示:

     raise NameError

    运行界面如下:

    2.使用异常类对象引发异常

    格式如下:

    raise 异常类对象   #格式2:使用异常类的对象引发指定的异常

    示例代码如下:

    raise NameError()

    运行界面如下:

    以上代码中的raise之后的NameError()用于创建异常类对象。创建异常类对象时还通过字符串指定异常的具体信息。

    示例代码如下:

    raise NameError("索引下标超出异常")

    运行界面如下所示:

     3.重新引发异常:

    格式如下:

     raise  #格式3:使用刚出现过的异常重新引发异常

    代码如下:

    try:
        raise NameError
    except:
        raise

    运行界面: 

    以上示例中的try语句执行后会出现因raise语句引发的NameError异常,出现异常后except子句会被执行;except子句后的代码又使用raise语句抛出刚刚发生的NameError异常,最终程序因再次抛出异常而终止执行。

    raise语句的语法格式总结如下:

    1.raise 异常类  #格式1:使用异常类名引发指定的异常

    2.raise 异常类对象   #格式2:使用异常类的对象引发指定的异常

    3. raise  #格式3:使用刚出现过的异常重新引发异常

    以上3种格式都是通过raise语句抛出异常。第1种格式和第2种格式是对等的,都会引发指定类型的异常。其中,第一种格式会隐式创建一个该异常类型的对象,第2种格式是最常见的形式,它会直接提供一个该异常类型的对象,第3种格式用于重新引发刚刚发生的异常。

    使用assert语句抛出异常:

    assert语句又称为断言语句,其语法格式如下所示:

    assert 表达式[,异常信息]

    以上语法格式的assert后面紧跟一个表达式,表达式的值为False时触发AssertionError异常,值为True时不做任何操作;表达式之后可以使用字符串来描述异常信息。

    assert语句可以帮助程序开发者在开发阶段调试程序,以保证程序能够正确运行。

    下面使用断言语句判断用户输入的除数是否为0,示例代码如下:

    num_one = int(input("请输入被除数:"))
    num_two = int(input("请输入除数"))
    assert num_two !=0,'除数不能为0'
    result=num_one/num_two
    print(num_one,'/',num_two,'=',result)

    运行界面: 

    以上代码首先会接收用户输入的2个数num_one和num_two,并将num_one和num_two分别作为被除数和除数;然后使用assert语句判定num_two不等于0,若不等于0则进行除法运算,否则会引发AssertionError异常,并提示"除数不能为0";最后输出num_one除以num_two的结果。

    异常的传递:

    如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍然没有处理异常,那么会继续向上传递,直至异常被处理或程序崩溃。

    示例如下:

    代码示例如下:

    def get_width():            #get_width()函数用于计算正方形边长
        print("get_width开始执行")
        num=int(input("请输入除数:"))
        width_len=10/num
        print("get_width执行结束")
        return width_len
    def calc_area():            #calc_area函数用于计算正方形面积
        print("calc_area开始执行")
        width_len =get_width()
        print("calc_area执行结束")
        return width_len*width_len
    def show_area():         #show_area()函数用于输出正方形的面积
        try:
            print("show_area开始执行")
            area_val=calc_area()
            print(f"正方形的面积是:{area_val}")
            print("show_area执行结束")
        except ZeroDivisionError as e:
            print(f"捕捉到异常:{e}")
    show_area()

    以上定义的函数show_area()为程序入口,该函数中调用了calc_area()函数,calc_area()函数中又调用了get_width函数。

    不出现异常时的运行机制:

    通过对该程序的分析,可知,程序的入口为show_area( ),首先执行函数show_area(),这个函数里面有try-except判断异常机制,识别try子句,无异常的时候,根据代码,首先输出show_area开始执行,之后将calc_area()的值赋给area_val,通过代码可知,calc_area的值可通过上一级的calc_area函数得到,看这段代码,输出calc_area开始执行,之后将get_width的值赋给width_len,与上面相似,可知get_width函数开始运行,输出get_width开始执行,然后输入除数,然后输出get_width执行结束,calc_area执行结束,输出正方形的面积是多少,输出show_area执行结束!

    运行界面如下:

    有异常的运行机制:

    因为只在show_area函数里面存在try-except异常识别机制,当get_width()函数使用变量num接收用户输入的除数,通过语句width_len=10/num计算正方形的边长,如果用户输入的除数值为0,那么程序会引发ZeroDivisionError异常。因为get_width()函数中并没有捕获异常的语句,所以get_width()函数中引发的异常向上传递到calc_area()函数,calc_area()函数中也没有捕获异常的语句,只能将异常继续向上传递到show_area()函数。

    show_area函数中设置了异常捕获语句try-except,它在接收到由calc_area()函数传递的异常后,会通过try-except捕获并处理异常。

     运行界面如图所示:

    展开全文
  • 主要介绍了Python 异常的捕获、异常的传递与主动异常操作,结合实例形式详细分析了Python针对异常捕获、传递、处理等常见操作技巧,需要的朋友可以参考下
  • Python异常处理能力非常强大,但是用不好也会带来负面的影响。我平时写程序的过程中也喜欢使用异常,虽然采取防御性的方式编码会更好,但是交给异常处理会起到偷懒作用。偶尔会想想异常处理会对性能造成多大的影响...
  • Python异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。 raise 语句 Python中的raise 关键字用于引发一...
  • Python抛异常详解

    千次阅读 2020-05-08 13:22:52
    Python抛异常【1】 程序运行过程中 Python解释器遇到一个错误 会停止程序的运行 并且提示一些错误信息 这个 就是异常 程序停止并且提示错误信息的动作叫做抛出异常 抛出异常原因 主动捕获异常 可以增加健壮性 ...

    PythonLearn

    Python抛出异常【1】

     程序运行过程中 Python解释器遇到一个错误 会停止程序的运行 并且提示一些错误信息 这个 就是异常
    程序停止并且提示错误信息的动作叫做抛出异常
    

    抛出异常原因

    	主动捕获异常 可以增加健壮性
    

    抛出异常的种类

    1. AssertionError ,断言失败抛出异常;
    2. AttributeError ,找不到属性抛出异常;
    3. ValueError , 参数值不正确(类型正确);
    4. WindowsError/(OSError,IOError,EnvironmentError),I/O相关错误
    5. UnicodeError,ValueError的子异常,编码错误
    6. UnicodeDecodeError UnicodeError的子异常 编码,解码错误
    7. UnicodeEncodeError UnicodeError的子异常 编码,编码错误
    8. UnicodeTranslateError UnicodeError的子异常 编码,翻译错误
    9. ConnectionError OSError子异常,连接错误
    10. BrokenPipeError ConnectionError 子异常 连接管道错误
    11. ArithmeticError 算术错误的基类
    12. ZeroDivisionError 算数错误的子类,除法或模运算的第二个参数是零
    13. BufferError 缓冲区错误
      注意 如果不确定需要打印异常种类 只是单纯不想让程序暂停 可以使用基类Exception 但是 Python中不推荐使用这种方法

    抛出异常的格式

    1.基本语法

    try:
        num = int(input("请输入一个数字:"))
        print(num)
    except ValueError as e:
      print(e)
    finally:
     print("抛出异常")
    

    2.解析
    关键字try 以及except是 使用Python 解释器主动抛出异常的关键,
    Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行
    except…as… 是固定的语法格式 打印traceback信息
    finally 后的代码不管是否抛出异常都会执行
    except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始
    注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)

    基本拓展:sys.exc.info

    1.初步拓展

    try:
        num = int(input("请输入一个数字:"))
        print(num)
    except ValueError as e:
        exc_type, exc_value, exc_traceback_obj = sys.exc_info()
        print(exc_type) # 异常的类型
        print( exc_value) # 异常的值
        print(exc_traceback_obj)	#异常的对象 返回堆栈的位置 内存地址
        
    
    

    在一般情况下 基本的抛出异常已经足够使用 但是 不排除特殊情况 比如说日志输出等场景 这种场景可能需要进一步的拓展异常的抛出 具体的方法会再下一章进行详细的记录…

    展开全文
  • python抛异常

    千次阅读 2018-08-23 09:31:03
    Python 试图执行无效代码时,就会异常。在第 3 章中,你已看到如何使用 try 和 except 语句来处理 Python异常,这样程序就可以从你预期的异常中恢复。但你也可以在代码中出自己的异常异常相当于是...

    当 Python 试图执行无效代码时,就会抛出异常。在第 3 章中,你已看到如何使用 try 和 except 语句来处理 Python 的异常,这样程序就可以从你预期的异常中恢复。但你也可以在代码中抛出自己的异常。抛出异常相当于是说:“停止运行这个函数中的代码,将程序执行转到 except 语句 ”。抛出异常使用 raise 语句。在代码中,raise 语句包含以下部分:
    • raise 关键字;
    • 对 Exception 函数的调用;
    • 传递给 Exception 函数的字符串,包含有用的出错信息。
    例如,在交互式环境中输入以下代码:

    >>> raise Exception('This is the error message.')
    Traceback (most recent call last):
        File "<pyshell#191>", line 1, in <module>
            raise Exception('This is the error message.')
    Exception: This is the error message.

    如果没有 try 和 except 语句覆盖抛出异常的 raise 语句,该程序就会崩溃,并显示异常的出错信息。通常是调用该函数的代码知道如何处理异常,而不是该函数本身。所以你常会看到 raise 语句在一个函数中,try 和 except 语句在调用该函数的代码中。例如,
    打开一个新的文件编辑器窗口,输入以下代码,并保存为 boxPrint.py:

    def boxPrint(symbol, width, height):
    	if len(symbol) != 1:
    		raise Exception('Symbol must be a single character string.')
    	if width <= 2:
    		raise Exception('Width must be greater than 2.')
    	if height <= 2:
    		raise Exception('Height must be greater than 2.')
    	print(symbol * width)
    	for i in range(height - 2):
    		print(symbol + (' ' * (width - 2)) + symbol)
    	print(symbol * width)
    
    for sym, w, h in (('*', 4, 4), ('0', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)):
    	try:
    		boxPrint(sym, w, h)
    	except Exception as err:
    		print('An exception happened: ' + str(err))

    这里我们定义了一个 boxPrint() 函数,它接受一个字符、一个宽度和一个高度。它按照指定的宽度和高度,用该字符创建了一个小盒子的图像。这个盒子被打印到屏幕上。假定我们希望该字符是一个字符,宽度和高度要大于 2。我们添加了 if 语句,如果这些条件没有满足,就抛出异常。稍后,当我们用不同的参数调用 boxPrint()时,try/except 语句就会处理无效的参数。这个程序使用了 except 语句的 except Exception as err 形式。如果 boxPrint()返回一个 Exception 对象,这条语句就会将它保存在名为 err 的变量中。Exception 对象可以传递给str(),将它转换为一个字符串,得到用户友好的出错信息。运行 boxPrint.py,输出看起来像这样:

    ****
    *  *
    *  *
    ****
    OOOOOOOOOOOOOOOOOOOO
    O                  O
    O                  O
    O                  O
    OOOOOOOOOOOOOOOOOOOO
    An exception happened: Width must be greater than 2.
    An exception happened: Symbol must be a single character string.

    使用 try 和 except 语句,你可以更优雅地处理错误,而不是让整个程序崩溃。

    展开全文
  • python中的raise
  • 直接上代码,理解代码即可,后续.../usr/bin/python # -*- coding: utf-8 -*- import time import sys try: aa = "bbb" print aaa except Exception, e: print "Error:" + str(e) print "输入错误" sys.exit(...
  • python抛异常的方法

    2021-03-05 15:26:56
    python抛异常的方法发布时间:2020-08-14 11:10:34来源:亿速云阅读:89作者:小新这篇文章主要介绍python抛异常的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常是Python...
  • python-异常

    2021-02-10 06:26:07
    除零异常 ZeroDivisionError名称异常 NameError类型异常 TypeError索引异常 IndexError键异常 KeyError值异常 ValueError属性异常 AttributeError迭代器异常 StopIteration错误信息的获取:错误信息中最后一行的第一...
  • python 异常的完整写法
  • 今天,总结一下最近编程使用的python异常处理和日志处理的感受,其实异常处理是程序编写时非常重要的一块,但是我一开始学的语言是C++,这门语言中没有强制要求使用try…catch语句,因此我通常编写代码的时候忽略了...
  • 1. 异常 1.1 raise raise 指定要出的异常。 对应参数必须是异常的实例或是异常的类(Exception) 例: def fun(x): if x > 5: raise Exception(f"x 不能大于 5,x={x}") """ Traceback (most recent...
  • python异常(概念、捕获、传递、出)

    万次阅读 多人点赞 2019-05-30 21:02:39
    程序在运行时,如果Python 解释器遇到到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常 程序停止执行并且提示错误信息这个动作,我们通常称之为:出(raise)异常 程序开发时,很难将所有的特殊...
  • python异常(raise语句)

    万次阅读 2019-06-18 18:37:19
    用 raise 能够主动异常, 使用【 raise 异常名 】出该类异常 raise IndexError 也可以单独使用 raise 再次引发刚发生的异常 try: 1/0 except: print("错误") raise 同时能够指定异常的描述信息 ...
  • 其实,我只是想在python抛出oracle错误的时候,捕获到具体ora-信息。 写法很简单,这里记录下,以备后用。 try: oracle_check(dbname) except cx_Oracle.DatabaseError as msg: print(msg) 另外,在python3中,...
  • 今天小编就为大家分享一篇python打印异常信息的两种实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 2. raise后的语句是不会被执行了,因为已经异常,控制流将会跳到异常捕捉模块。 3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理。 4. except语句捕捉的异常如果没有...
  • python 异常记录

    千次阅读 2020-08-27 10:43:40
    python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 AttributeError #试图访问一个对象没有的树形,比如foo.x,但是foo没有...
  • Python 使用 raise 语句出一个指定的异常。 raise 唯一的一个参数指定了要被出的异常。 它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。 如下: x = 10 if x > 5: raise Exception('x 不...
  • 主要介绍了Python使用lambda异常实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python----主动异常并且捕获异常

    千次阅读 2022-04-03 16:50:54
    python中,除了代码执行出错python解释器会异常以外 咱们还可以根据应用程序特有的业务需求主动异常 python中提供了一个Exception异常类 在开发时,如果满足特定业务需求时,希望异常,可以 1、创建...
  • 执行这个程序时,会出: AttributeError: 'int' object has no attribute 'apppend' 我们使用try:except语句进行捕获。 # 捕获异常 a = 123 try: a.apppend(4) except AttributeError: print("数字类型不能...
  • python异常抛

    2020-11-29 14:45:17
    广告关闭腾讯云11.11云上...主动异常raise typeerror(类型错误) # 7. 触发异常try: raise typeerror(类型错误)except exception as e: print(e) # 8. 自定义异常class my...syntaxerror 语法错误 python代码非...
  • 异常出与传递01.异常出raise语句02.assert断言语句03.异常的传递04 with和as环境安装器05打开和关闭文件的异常处理06with和as的执行原理总结 前言 ···异常处理,英文名为exceptional handling, 是代替...
  • 1、异常的语法 1)完整的异常处理语法格式: try: print(10/0) except NameError as e: print('出现 NameError 异常') except ZeroDivisionError as e: print('出现 ZeroDivisionError 异常') except ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,144
精华内容 51,657
关键字:

python抛异常