1.异常の概念
程序在运行时,如果Python的解释器
遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常
程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise)异常
2.异常处理
直接上代码:
1.异常捕获的语法
try:
#<正常执行的代码>
pass
except:
#<出现异常执行的代码>
pass
2.捕获不同的错误类型
try:
#<正常执行的代码>
pass
except < 错误类型1 >:
#<出现错误1执行的代码>
pass
except < 错误类型2, 错误类型3 >:
# <出现错误2或者错误3执行的代码>
pass
except Exception as result:
print("未知错误类型:{}".format(result))
3.完整的异常捕获语法
try:
#正常执行的代码
pass
except <错误1>:
#抛出错误1时执行的代码
pass
except <错误2>:
#抛出错误2时执行的代码
pass
except <错误3, 错误4>:
#抛出错误3或者错误4时执行的代码
pass
except Exception as result:
print("未知错误类型:{}".format(result))
else:
#没有异常才会执行的代码
pass
finally:
#无论是否有异常都会执行的代码
print("程序结束")
3.异常的传递
注意:
在开发中,可以在主函数中增加 异常捕获,这样在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获 中
这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁
def demo1():
return int(input("请输入一个整数:"))
def demo2():
return demo1()
def main():
try:
print(demo2())
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
main()
上面的示例中只在主函数中添加了异常捕获,这样也可以检测到来自demo1和demo2中的异常信息
4.抛出raise异常
Python
中提供了一个 Exception异常类
如果在满足特定需求时,希望抛出异常,则:
Exception
的对象raise
关键字 抛出异常对象示例:
input_password
函数,提示用户输入密码def input_password():
# 1. 提示用户输入密码
pwd = input("请输入密码:")
# 2. 判断密码长度,如果长度 >= 8,返回用户输入的密码
if len(pwd) >= 8:
return pwd
# 3. 密码长度不够,需要抛出异常
# 1> 创建异常对象 - 使用异常的错误信息字符串作为参数
ex = Exception("密码长度不够")
# 2> 抛出异常对象
raise ex
try:
user_pwd = input_password()
print(user_pwd)
except Exception as result:
print("发现错误:%s" % result)
eval()
函数十分强大 —— 将 字符串 当成 有效的表达式 来求值 并 返回计算结果
个人理解:有去括号的功能,转变成相关形式
# 基本的数学计算
eval("1 + 1")
#输出:
2
# 字符串重复
eval("'*' * 10")
#输出:
'**********'
# 将字符串转换成列表
type(eval("[1, 2, 3, 4, 5]"))
#输出:
[1, 2, 3, 4, 5]
# 将字符串转换成字典
type(eval("{'name': 'xiaoming', 'age': 18}"))
#输出:
{'name': 'xiaoming', 'age': 18}
实例:计算加减乘除的计算器
str = input("输入算式:")
print(eval(str))