大家好,又见面了,我是你们的朋友全栈君。
一、什么是异常
Python错误与异常
什么是异常
ZeroDivisionError: division by zero
NameError: name ‘a1’ is not defined
TypeError: can only concatenate str (not “int”) to str
二、异常处理
异常处理
1-1
def exp_exception(x,y): try: a=x/y print('a=',a) return a except Exception: print("程序出现异常,异常信息:被除数为0") exp_exception(2,2) => a= 1.0
1-2
def exp_exception(x,y): try: a=x/y print('a=',a) return a except Exception: print("程序出现异常,异常信息:被除数为0") exp_exception(2,0) => 程序出现异常,异常信息:被除数为0
1-1
def exp_exception(x,y): try: a=x/y b=name print('a=',a) return a except ZeroDivisionError: print("除数不能为0") except NameError: print("没有你要找的名字") exp_exception(2,0) => 除数不能为0
1-2
def exp_exception(x,y): try: a=x/y b=name print('a=',a) return a except ZeroDivisionError: print("除数不能为0") except NameError: print("没有你要找的名字") exp_exception(2,2) => 没有你要找的名字
> 使用一个块捕捉多个异常
def exp_exception(x,y): try: a=x/y b=name print('a=',a) return a except (ZeroDivisionError,NameError,TypeError): print("你的输出数据有误!") exp_exception(2,'0') => 你的输出数据有误!
异常处理
> 捕捉对象
def exp_exception(x,y): try: a=x/y b=name print('a=',a) return a except (ZeroDivisionError,NameError,TypeError) as e: print(e) # 输出 e,这地方不要写自己自定义的内容 exp_exception(2,'0') exp_exception(2,0) exp_exception(2,2) => unsupported operand type(s) for /: 'int' and 'str' division by zero name 'name' is not defined
> 全捕捉
def exp_exception(x,y): try: a=x/y b=name except (ZeroDivisionError,NameError,TypeError) as e: print(e) exp_exception(2,'') => unsupported operand type(s) for /: 'int' and 'str'
def exp_exception(x,y): try: a=x/y b=name except: print("Error") exp_exception(2,'') => Error
> try/except…else
def exp_exception(x,y): try: a=x/y except: print("Error") else: print("程序没有错误,执行结束") exp_exception(2,'') exp_exception(2,2) => Error
> try-finally 语句
def use_finally(x,y): try: a=x/y finally: print("不管有没有异常,都会执行我的哦~") use_finally(2,2) use_finally(2,0) => 不管有没有异常,都会执行我的哦~ 不管有没有异常,都会执行我的哦~ Traceback (most recent call last): File "d:/VSCode/Untitled-1.py", line 10, in <module> use_finally(2,0) File "d:/VSCode/Untitled-1.py", line 5, in use_finally a=x/y ZeroDivisionError: division by zero
def use_finally(x,y): try: a=x/y except ZeroDivisionError: print("除数不能为0") finally: print("不管有没有异常,都会执行我的哦~") use_finally(2,2) use_finally(2,0) => 不管有没有异常,都会执行我的哦~ 除数不能为0 不管有没有异常,都会执行我的哦~
def use_finally(x,y): try: a=x/y except ZeroDivisionError: print("除数不能为0") else: print("程序执行成功") finally: print("不管有没有异常,都会执行我的哦~") use_finally(2,2) use_finally(2,0) => 程序执行成功 不管有没有异常,都会执行我的哦~ 除数不能为0 不管有没有异常,都会执行我的哦~
三、抛出异常
抛出异常
Exception
NameError: This is NameError
try: raise NameError("这是一个NameError") except NameError: print("捕捉到NameError") # 不加 raise,输出对应字符就结束 => 捕捉到NameError
try: raise NameError("这是一个NameError") except NameError: print("捕捉到NameError") raise => 捕捉到NameError Traceback (most recent call last): File "d:/VSCode/Untitled-1.py", line 4, in <module> raise NameError("这是一个NameError") NameError: 这是一个NameError
Python重要的内建异常类
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156008.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...