Python学习笔记(十)——异常及异常的处理

本节包括异常的定义,异常的捕获,异常的传递及抛出异常。

1. 异常

异常:程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且会提示一些错误的信息。
程序停止执行并且提示错误信息这个动作就是抛出异常
所以:
通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性。

2. 捕获异常

如果对某些代码的执行不能确定是否正确,可以使用**try:**来捕获异常
语法:

try:
	尝试执行的代码
except:
	出现错误的处理
	
描述:当try中的代码出现错误,则执行except中的代码

代码演示:

try:
    num = int(input("请输入一个整数"))
except:
	# 错误的处理代码
    print("请输入正确的整数")

结果:
请输入一个整数a
请输入正确的整数

2.1 针对错误类型来捕获异常

异常有很多类型,需要对不同类型的异常,做出不同的响应。

语法:

try:
	#尝试执行的代码
	pass
except 错误类型1:
	#对应的代码处理
except 错误类型2:
	#对应的代码处理
except Exception as result:
	print("未知错误%s"% result)

捕获未知错误:

语法
except Exception as result:
		print("未知错误%s"% result)

当出现异常时,最后一行错误信息的第一个单词,就是错误类型。

示例:

try:
    num = int(input("请输入一个整数"))
    result = 8/num
    print(result)
except ZeroDivisionError:
    print("分母不能为0")
except ValueError:
    print("请输入正确的整数")


try:
    num = int(input("请输入一个整数"))
    result = 8/num
    print(result)
# except ZeroDivisionError:
#     print("分母不能为0")
except ValueError:
    print("请输入正确的整数")
except Exception as res:
    print("未知错误%s"%res)

请输入一个整数0
未知错误division by zero

2.2 异常捕获的完整语法:

try:
	#尝试执行的代码
	pass
except 错误类型1:
	#对应的代码处理
except 错误类型2:
	#对应的代码处理
except Exception as result:
	print("未知错误%s"% result)
else:
	#没有异常才会执行的代码
finally:
	#无论是否有异常,都会执行的代码

代码演示:

try:
    num = int(input("请输入一个整数"))
    result = 8/num
    print(result)
# except ZeroDivisionError:
#     print("分母不能为0")
except ValueError:
    print("请输入正确的整数")
except Exception as res:
    print("未知错误%s"%res)
else:
    print("程序正常执行")
finally:
    print("无论是否异常,都会执行")

3. 异常的传递

当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方
如果传递到主函数,仍然没有异常处理,程序才会被终止。
因此:
可以在主函数中,增加异常捕获

def demo1():
    return int(input("请输入一个整数"))
def demo2():
    return demo1()
try:
    print(demo2())
except Exception as result:
    print("未知错误%s" %result)

请输入一个整数d
未知错误invalid literal for int() with base 10: 'd'

4. 抛出raise异常

1.创建Exception异常对象
2.使用raise抛出异常

def input_password():
    pw = input("请输入密码")
    if len(pw) >= 8:
        return pw
    print("主动抛出异常")
    # 1.创建异常对象-可以使用错误信息字符串作为参数
    ex = Exception("密码长度不够")
    #2.主动抛出异常
    raise ex
#3.捕获异常
try:
    print(input_password())
except Exception as result:
    print(result)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章