-
2022-04-18 19:30:30
抛出异常的完整个写法:
try: # 尝试执行的代码 pass except Exception [错误类型]: # 针对错误类型的处理 1 如果你知道会发生什么异常的话 pass except Exception [错误类型]: # 针对错误类型的处理 2 如果你知道会发生什么异常的话 pass except Exception as result: # 打印错误信息 未知的异常处理 print(result) else: # 没有发生异常执行的代码 pass finally: # 无论是否有异常都会执行的代码 print("无论是否有异常都会执行的代码")
更多相关内容 -
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2020-09-18 15:25:40主要介绍了Python 异常的捕获、异常的传递与主动抛出异常操作,结合实例形式详细分析了Python针对异常捕获、传递、处理等常见操作技巧,需要的朋友可以参考下 -
浅谈python抛出异常、自定义异常, 传递异常
2020-09-21 15:23:35本文给大家简单汇总了下Python中抛出异常、自定义异常,传递异常的简单应用,有需要的小伙伴可以参考下 -
Python 抛出异常
2017-12-13 23:20:41Python 抛出异常 抛出异常相当于是停止运行这个函数中的代码,将程序执行转到 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
References
-
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抛出异常的方法
2021-03-05 15:26:56python抛出异常的方法发布时间:2020-08-14 11:10:34来源:亿速云阅读:89作者:小新这篇文章主要介绍python抛出异常的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常是Python...python抛出异常的方法
发布时间:2020-08-14 11:10:34
来源:亿速云
阅读:89
作者:小新
这篇文章主要介绍python抛出异常的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
python学习网,大量的免费python视频教程,欢迎在线学习!
常见异常# AttributeError 调用不存在的方法引发的异常
# EOFError 遇到文件末尾引发的异常
# ImportError 导入模块出错引发的异常
# IndexError 列表月越界引发的异常
# IOError I/O操作引发的异常,如打开文件出错等
# KeyError 使用字典中不存在的关键字引发的异常
# NameError 使用不存在的变量名引发的异常
# TabError 语句块缩进不正确引发的异常
# ValueError 搜索列表中不存在值引发的异常
# ZeroDivisionError 除数为零引发的异常
基础异常处理
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句(与try同级的except等)先执行,接下来会发生什么依赖于执行时是否出现异常。
如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
不管在try有无异常抛出时都会执行本级try对应的finally。
基础语法try:
检测异常代码段except:
发生异常后执行代码段else:
未发生异常执行代码段finally:
最终执行代码段
例如print("test1")
try:
s = input()
if s is None:
print ("s 是空对象")
print(len(s)) #这句抛出异常
except TypeError:
print("类型错误空对象没有长度")
else:
print("no problem")
finally:
print('end test1')
以上是python抛出异常的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
-
python抛出异常
2018-08-23 09:31:03当 Python 试图执行无效代码时,就会抛出异常。在第 3 章中,你已看到如何使用 try 和 except 语句来处理 Python 的异常,这样程序就可以从你预期的异常中恢复。但你也可以在代码中抛出自己的异常。抛出异常相当于是... -
Python抛出异常详解
2020-05-08 13:22:52Python抛出异常【1】 程序运行过程中 Python解释器遇到一个错误 会停止程序的运行 并且提示一些错误信息 这个 就是异常 程序停止并且提示错误信息的动作叫做抛出异常 抛出异常原因 主动捕获异常 可以增加健壮性 ... -
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<0 or height<... -
python抛出异常,处理异常,自定义异常实例
2019-03-31 19:38:58需求:提示用户输入性别,如果非男非女,抛出异常并处理 # 自定义异常 class GenderException(Exception): pass 注释:自定义异常需要继承父类Exception # 定义sex函数 def sex(): a = input("请输入性别:") if... -
python 抛出异常记录
2020-08-27 10:43:40在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 AttributeError #试图访问一个对象没有的树形,比如foo.x,但是foo没有... -
python 抛出异常的方法try except,raise、return、break、continue、exist(结束程序)的区别...
2021-07-30 11:40:02raise #该方法可直接结束两层循环,抛出异常;如果用break,则只会结束内层循环,然后继续下一次外层循环;如果用return,也是直接结束两层循环,该方法必须在函数中用;continue是不执行后面的程序,进入下一次循环... -
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手动抛出异常
2019-03-15 21:40:52# 根据业务逻辑判断,需要手动抛出异常 raise Exception(print(a)) #raise Exception('print(a)')#注意这两个的区别,这个带字符串,直接打印字符串里的内容,python把字符串的内容一字不差解析成了异常并打印... -
python 抛出异常与自定义异常raise
2021-01-14 15:34:46使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。 try: s = None if s is None: print "s 是空对象" raise Name... -
你如何测试Python函数抛出异常?
2021-01-30 02:30:06首先,这是文件dum_function.py中相应的(仍然是dum:p)函数:def square_value(a):"""Returns the square value of a."""try:out = a*aexcept TypeError:raise TypeError("Input should be a string:")return out这... -
python 抛出异常的方法try except,raise、return、break、continue、exist(结束程序)的区别
2020-11-22 16:39:06raise #该方法可直接结束两层循环,抛出异常;如果用break,则只会结束内层循环,然后继续下一次外层循环;如果用return,也是直接结束两层循环,该方法必须在函数中用;continue是不执行后面的程序,进入下一次... -
python 抛出异常
2019-05-09 08:37:11 -
python----主动抛出异常并且捕获异常
2022-04-03 16:50:54在python中,除了代码执行出错python解释器会抛出异常以外 咱们还可以根据应用程序特有的业务需求主动抛出异常 python中提供了一个Exception异常类 在开发时,如果满足特定业务需求时,希望抛出异常,可以 1、创建... -
Python_抛出异常
2018-09-28 10:33:03def input_password(): # 提示用户输入密码 pwd = input("...) ... if len(pwd) >= 8: return pwd # 如果小于8,则抛出异常 print("主动抛出异常") # 创建异常对象 ex = Excep... -
Python抛出异常之后返回try语句,直到没有异常出现
2020-11-29 19:40:51假设我们写一个程序,可以将输入的身高厘米数转化为英寸,如果遇到了负数,字母,中文等则抛出异常,并输出“Only positive numeric inputs are accepted. Please try again.”,最后再返回到输入input函数当中,... -
python主动抛出异常不进行捕获程序会终止运行
2022-02-06 15:27:23python中的raise -
零基础学 Python(32):如何抛出和捕获异常?
2021-02-04 02:19:38在 Python 中是使用 raise 关键字来抛出异常的,比如在下面这个函数中,如果不存在目标文件,则会抛出一个 Exception 通用异常。2. 如何捕获异常?出现错误或者异常没有关系,关键在于你要学会预判程序可能会出现... -
python打印异常信息的两种实现方式
2020-09-18 05:50:23今天小编就为大家分享一篇python打印异常信息的两种实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python 自定义异常和主动抛出异常(raise)的操作
2020-12-21 15:43:46前言有时候python自带异常不够用,如同java,python也可以...格式:主动抛出异常终止程序raise 异常名称(‘异常描述")raise RuntimeError("testError")主动抛出这个异常,并加以解释。自定义异常python的异常分为两... -
python之抛出异常(raise语句)
2019-06-18 18:37:19用 raise 能够主动抛出异常, 使用【 raise 异常名 】抛出该类异常 raise IndexError 也可以单独使用 raise 再次引发刚发生的异常 try: 1/0 except: print("错误") raise 同时能够指定抛出异常的描述信息 ...