栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

语法6:raise - 触发异常

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

语法6:raise - 触发异常

目录

1. 基础格式

2. raise 单独语句

3. raise class

4. raise instance

5. raise from

6. try ... raise ...  实现循环跳出


1. 基础格式

raise语句可以触发异常,用于直接抛出Python内置异常,或用户自定义的异常。

raise语句有如下几种形式:

raise
raise class [from (otherexce | None)]
raise instance [from (otherexce | None)]

2. raise 单独语句

单独使用 raise 语句,默认引发 RuntimeError 异常;

单独使用 raise 语句,也可以引发当前上下文中捕获的异常,譬如在 except 块中使用,可以直接触发已被捕获的异常。

#单独使用 raise 语句,默认引发 RuntimeError 异常
raise
Traceback (most recent call last):
  File "", line 1, in 
RuntimeError: No active exception to reraise

#在 except 块中单独使用 raise 语句,触发已被捕获的异常
try:    
    1/0
except:
    raise

Traceback (most recent call last):
  File "", line 2, in 
ZeroDivisionError: division by zero

3. raise class

raise class,通常使用 raise 异常类型这样的结构,直接触发内置或自定义异常类型。

raise FileNotFoundError
Traceback (most recent call last):
  File "", line 1, in 
FileNotFoundError

raise OSError
Traceback (most recent call last):
  File "", line 1, in 
OSError

4. raise instance

raise instance,通常使用 raise 异常类型(描述信息) 这样的结构,触发内置或自定义异常,同时附带异常描述。

raise FileNotFoundError('文件无法找到!')
Traceback (most recent call last):
  File "", line 1, in 
FileNotFoundError: 文件无法找到!

raise OSError('系统错误!')
Traceback (most recent call last):
  File "", line 1, in 
OSError: 系统错误!

5. raise from

异常有时候能作为对其他异常的相应而触发,Python 支持 raise 语句拥有一个可选的 from 分句,语法结构如下:

raise newexception from otherexception

from 后面跟的表达式制定了另一个异常类或实例,该异常(即 otherexception)会附加到新印发异常(即 newexception)的__cause__属性。

raise OSError('系统错误!') from FileNotFoundError('文件无法找到!')
FileNotFoundError: 文件无法找到!
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "", line 1, in 
OSError: 系统错误!

6. try ... raise ...  多层循环跳出

对于多层嵌套循环,内层的 break、continue 只能跳出一层循环,当需要一次结束所有循环结构,可以使用 try ... raise ... 语句;

首先将多层嵌套循环结构放入 try suite 结构中;再在循环结构中需要跳出的位置写入 raise 触发异常;最后根据需要在 except 或 finally suite 中做跳出的后续处理。

x = 1
try:
    while x > 0:
        while x < 80:
            for x in range(1,1000):           
                print(x)
                if x > 5:
                    raiese
            print('被跳过代码')
        print('被跳过代码')
    print('被跳过代码')
except:
    print('直接跳出!')
    
1
2
3
4
5
6
直接跳出!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号