文章目录
try…except结构
异常处理结构:
try:
被监控的可能引发异常的语句块
except BaseException [as e]:
异常处理语句块
try中有异常,跳过try后段,执行except
try中无异常,跳过except,继续后面代码执行
while True:
try:
x = int(input("亲输入一个数字"))
print("请输入的数字:",x)
if x==88:
print("退出程序")
break
except BaseException as e:
print(e)
print("异常,输入的不是一个数字")
print("循环数字输入程序结束!")
运行结果:
亲输入一个数字23
请输入的数字: 23
亲输入一个数字a
invalid literal for int() with base 10: 'a'
异常,输入的不是一个数字
亲输入一个数字
try…多个except结构
先子类后父类
结构如下:
try:
被监控发生异常的语块
except Exception1:
处理语句
except Exception2:
处理语句
...
except BaseException
【试例】
try:
a = input("输入被除数")
b = input("输入除数")
c = float(a)/float (b)
print(c)
except ZeroDivisionError :
print("异常,不能除以零")
except ValueError :
print("异常,不能将字符串转化成数字")
except NameError :
print("异常,变量不存在")
except BaseException as e:
print(e)
try…except…else结构
try 中有异常,执行except
try中无异常,执行else
【试例】
try:
a = input("输入被除数")
b = input("输入除数")
c = float(a)/float (b)
print(c)
except BaseException as e:
print(e)
else:
print("结果是:",c)
try…except…finally结构
无论是否发生异常,finally 块始终执行,一般用于释放try资源
【示例】
try:
a = input("输入被除数")
b = input("输入除数")
c = float(a)/float (b)
print(c)
except BaseException as e:
print(e)
else:
print("结果是:",c)
finally:
print("我是finally中的语句,无论发生什么都执行")
print("程序结束!")
return
return两种作用:结束方法运行、返回值。一般不把return放异常处理结构中,而是放方法最后。
常见异常解决
1.SyntaxError:语法错误
2.NameError:尝试访问一个没有申明的变量
3.ZeroDivisionError:除数为0错误(0除错误)
4.ValueError:数值错误
5.TypeError:类型错误
6.AttributeError:访问对象的不存在属性
7.IndexError:索引越界异常
8.KeyError:字典的关键字不存在
常见异常汇总
with 上下文管理
with 更方便实现释放资源操作
语法结构:
with context_expr[as var]:
语句块
with 执行后,自动还原上下文
with open("d:/ddd.txt","r") as f:
content = f.readline()
print(contant)
print("程序执行结束!")
traceback模块
打印异常信息
import traceback
try:
print("step1")
num = 1/0
except :
traceback.print_exc()
####将异常信息输出到指丁文件夹中######
try:
print("step1")
num =1/0
except:
with open("d:/a.txt","a") as f:
traceback .print_exc(file=f)
自定义异常类
继承Exception或其子类 命名以Error、Exception
由 raise引出
class AgeError(Exception ):#继承Exception
def __init__(self,errorInfo):
Exception .__init__(self)
self.errorInfo = errorInfo
def __str__(self):
return str (self.errorInfo )+"年龄错误!"
###############测试代码####################
if __name__ =="__main__": #如果为True 模块独立文件运行 可执行
age = int(input("输入年龄"))
if age<1 or age>150:
raise AgeError (age)
else:
print("正常的年龄",age)
Pycharm开发环境的调试
调试的核心是设置断点,运行到断点,暂时挂起,停止执行。
1.设置断点
(1)行号后单击
(2)再点击取消