精华内容
下载资源
问答
  • Python 抛出异常

    万次阅读 2017-12-13 23:20:41
    Python 抛出异常 抛出异常相当于是停止运行这个函数中的代码,将程序执行转到 except 语句。 如果没有 try 和 except 语句覆盖抛出异常的 raise 语句,该程序就会崩溃,并显示异常的出错信息。通常是调用该函数的...

    Python 抛出异常

    抛出异常相当于是停止运行这个函数中的代码,将程序执行转到 except 语句。

    如果没有 try 和 except 语句覆盖抛出异常的 raise 语句,该程序就会崩溃,并显示异常的出错信息。通常是调用该函数的代码知道如何处理异常,而不是该函数本身。所以你常常会看到 raise 语句在一个函数中, try 和 except 语句在调用该函数的代码中。

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

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    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), ('O', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)):
        try:
            boxPrint(sym, w, h)
        except Exception as err:
            print('An exception happened: ' + str(err))
    

     

    /usr/bin/python3.5 /home/strong/workspace/master.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.
    
    Process finished with exit code 0
    

     

    展开全文
  • 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 抛出异常

    2018-08-09 21:35:14
    #!... # 没有的函数,会抛出异常 printf("hello word") except Exception as e: try: # 没有的函数,会抛出异常 println("出错了--&gt;",e) print("hello wo...
    #!/usr/bin/env python
    #!-*-coding:utf-8 -*-
    try:
        # 没有的函数,会抛出异常
        printf("hello word")
    except Exception as e:
        try:
            # 没有的函数,会抛出异常
            println("出错了-->",e)
            print("hello word")
        except Exception as a2:
            print("尝试两次都报错了-->",a2)
    

    结果

    展开全文
  • 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 抛出异常记录

    2020-08-27 10:43:40
    python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 AttributeError #试图访问一个对象没有的树形,比如foo.x,但是foo没有...
  • 需求:提示用户输入性别,如果非男非女,抛出异常并处理 # 自定义异常 class GenderException(Exception): pass 注释:自定义异常需要继承父类Exception # 定义sex函数 def sex(): a = input("请输入性别:") if...
  • python 抛出异常和捕获异常

    千次阅读 2019-03-07 10:53:25
    抛出异常: class Widget: def __init__(self,size=(40,40)): self._size=size def getSize(self): return self._size def resize(self,width,height): if width&lt;0 or height&lt...
  • raise语句 当程序出现错误时,系统会自动引发错误。除此之外,也允许程序自行引发异常 ...# 执行到抛出异常后,异常后面的程序不会执行,可以定位错误发生的地方 # 根据项目的实际需要,发生什...
  • python 抛出异常 try except 应用总结

    千次阅读 2018-05-10 08:20:18
    第一种:try except 抛出异常结束程序运行def collatz(number): try: number = int(number) if number % 2 == 0: return number // 2 elif number % 2 == 1: return 3 * num...
  • Python抛出异常的方法

    2011-04-10 19:47:32
    抛出异常的方式有两种方式: 第一种方式: [code="python"] raise Class,instance [/code] 第一种形式中instance必须是class或其一子类的实例 第二种方式: [code="python"] raise ...
  • raise #该方法可直接结束两层循环,抛出异常;如果用break,则只会结束内层循环,然后继续下一次外层循环;如果用return,也是直接结束两层循环,该方法必须在函数中用;continue是不执行后面的程序,进入下一次...
  • python手动抛出异常

    万次阅读 2019-03-15 21:40:52
    # 根据业务逻辑判断,需要手动抛出异常 raise Exception(print(a)) #raise Exception('print(a)')#注意这两个的区别,这个带字符串,直接打印字符串里的内容,python把字符串的内容一字不差解析成了异常并打印...
  • 1. java if(条件){ throw new RuntimeException("描述。。。"); //直接手动抛出异常 } 2. python if 条件: raise RuntimeError('描述。。。') #直接手动抛出异常
  • Python_抛出异常

    千次阅读 2018-09-28 10:33:03
    def input_password(): # 提示用户输入密码 pwd = input("...) ... if len(pwd) &gt;= 8: return pwd # 如果小于8,则抛出异常 print("主动抛出异常") # 创建异常对象 ex = Excep...
  • python自定义抛出异常

    2018-11-28 17:24:08
    raise抛出异常 #raise抛出异常 def fun(): for i in range(5): if i &gt; 1: raise Exception("数字大于1") except Exception as ret: print(ret) fun()
  • 1、异常的语法 1)完整的异常处理语法格式: try: print(10/0) except NameError as e: print('出现 NameError 异常') except ZeroDivisionError as e: print('出现 ZeroDivisionError 异常') except ...
  • python自定义异常类型和raise抛出异常

    万次阅读 2018-08-18 10:41:44
    实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常异常类继承自 Exception 类,可以直接继承,或者间接继承。 1.自定义异常类型 #1.用户自定义...
  • 主动抛出异常 例子: def password_verify(pwd): """ 密码大于8位返回值,小于八位主动抛出异常 """ if len(pwd) >= 8: return pwd elif len(pwd) < 8: # 自定义异常,并抛出 pwd_er...
  • python抛出异常(raise语句)

    万次阅读 2019-06-18 18:37:19
    用 raise 能够主动抛出异常, 使用【 raise 异常名 】抛出该类异常 raise IndexError 也可以单独使用 raise 再次引发刚发生的异常 try: 1/0 except: print("错误") raise 同时能够指定抛出异常的描述信息 ...
  • Python 试图执行无效代码时,就会抛出异常。 我们也可以使用 raise 语句抛出异常。在代码中, raise 语句包含以下部分: raise 关键字; 调用 Exception 函数,同时传入出错信息描述。 raise Exception('抛出...
  • python mock 打桩抛出异常

    千次阅读 2018-08-20 10:36:01
    而且工程代码为了方便定位错误,会在函数的前后包围try_except_else块,这一个块就占了几行,如果没一个函数都无法覆盖这个异常处理的块,那么覆盖率将会受到很大的影响,这篇博客演示如何用python模拟异常。...
  • #重新抛出这个异常,此时不会被这个异常给捕获到,从而触发磨人的异常处理 raise a = Test(True) a.calc(11, 0) print("---------------华丽的分割线------------------") #a.switch = False #a.calc(11, 0) ...
  • python用raise手动抛出异常

    千次阅读 2019-04-18 15:55:55
    python用raise手动抛出异常文章目录: raise: 就是手动抛出异常 格式: 格式:raise [exceptionType[,argument][,traceback]] 举例子1: def functionName( level ): if level < 1: raise Exception(...
  • demo.py(raise主动抛出异常): def input_password(): # 提示用户输入密码 pwd = input("请输入密码:") # 如果密码长度&gt;=8,返回用户输入的密码 if len(pwd) &gt;= 8: return pwd ...
  • 为了更好的了解异常处理,可以查看官方文档。 The Python Tutorial ...这个例子便于我们理解抛出异常, class B(Exception): pass class C(B): pass class D(C): pass for cls in [B, ...
  • python中的抛出异常

    千次阅读 2019-01-17 17:29:27
    age = int(input(&quot;...# raise ====== 抛出异常 class AgeError(Exception): pass if age &amp;lt; 0 or age &amp;gt; 120: raise AgeError else: print(age) ...
  • python3 raise 抛出异常

    千次阅读 2019-06-03 15:22:49
    当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。 演示raise用法 try: s = None if s is None: print "s 是空对象" raise Name...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,475
精华内容 40,590
关键字:

python抛出异常

python 订阅