**
**
except方法使用1 语法格式如下
try:
可能会出现问题的代码
except:
如果出现问题会执行except下方的代码
示例代码如下:
try:
a = int(input("请输入一个被除数:"))
b = int(input("输入一个除数"))
c = a / b
print("结果为%g" % c)
except ZeroDivisionError:
print("输入错误")
except Exception as result: # 如果不确定会出现什么异常时,使用此语句
print(result)
print(type(result))
except BaseException: # 此异常为父类异常
print("其他异常") # 多个异常之间的顺序要求是:子类在前 父类在后
## except方法使用2 语法格式如下
try:
except(异常1,异常2,异常3…) as result:
使用元组存储多个异常的时候,多个异常之间没有顺序要求
实例代码如下:
try:
a = int(input("输入一个被除数:"))
b = int(input("输入一个除数"))
c = a / b
print(c)
except(Exception, ValueError, ZeroDivisionError) as e:
print(e.args)
print(type(e))
print("遇到异常")
try:
except 异常 as 变量:
else:
没有异常执行的代码
finally:
不管有没有异常,最后一定会执行的代码
实例代码如下:
file = open("123.txt", "w", encoding="utf-8")
file.write("hello world")
file.write("hello python")
file.write([1, 2, 3])
print("写入完毕")
file.close()
print("文件已关闭谢谢使用")
以上代码块是有错误的,因为write方法只能将字符串数据写入到文件中
修改后的代码如下:
try:
file = open("123.txt", "w", encoding="utf-8")
file.write("hello world")
file.write("hello python")
file.write([1, 2, 3])
print("写入完毕")
except Exception as e:
print(e.args)
print(type(e))
else:
print("没有异常,操作成功")
finally:
file.close() #打开文件之后,一定要关闭文件
print("文件已关闭谢谢使用")
**
return语句的两个作用:结束方法运行和返回值。
一般不把return放到异常处理结构中,而是放到方法的最后。
def test1():
print("这是第一步")
try:
x=3/0
except:
print("这是第二步")
print("异常,0不能做除数")
finally:
print("第三步")
print("第4步")
return "e"
print(test1())
**
**
示例代码如下:
def test1():
print(aa)
def test2():
test1()
def test3():
test1()
test3()
注:以上代码块是错误的,因为变量aa没有被定义
运行结果如下:
python中提供了一个Exception异常类
在开发时如果要满足特定业务需求,希望抛出异常,可以:
1,创建一个Exception类对象
2,使用raise关键字抛出异常对象
3,抛出异常之后,在调用函数的一方就可以捕获异常了。
示例代码如下:
def password():
pwd = input("请输入密码:")
if len(pwd) >= 8:
return pwd
print("主动抛出异常")
ex = Exception("密码长度不够")
raise ex
try:
print(password())
except Exception as result:
print(result)
print(type(result))
**
1,在程序开发中,有时也需要自己定义异常类。自定义异常一般都是运行时异常,通常继承Exception或者其子类即可,命名一般以Error,Exception为后缀。
2,自定义异常由raise语句主动抛出
class AgeError(Exception):
def __init__(self, error_info):
Exception.__init__(self)
self.error_info = error_info
def __str__(self):
return str(self.error_info)+"年龄错误,应该在1-150之间"
# 如果为True,则模块是作为独立文件运行,可以执行测试代码
if __name__ == "__main__":
age = int(input("请输入年龄:"))
if age < 1 or age > 150:
raise AgeError(age)
else:
print("正常的年龄",age)
运行结果为:
请输入年龄:200
Traceback (most recent call last):
File "E:/06_面向对象/LX_15_单例.py", line 13, in
raise AgeError(age)
__main__.AgeError: 200年龄错误,应该在1-150之间
**
**
1,SyntaxError 语法错误
2,NameError 尝试访问一个没有申明的变量
3,ZeroDivisionError 除数为0错误 (零除错误)
4,ValueError 数值错误
5,TypeError 类型错误
6,AttributeError 访问对象不存在的属性
7,IndexError 索引越界异常
8,KeyError 字典的关键字不存在
**
import traceback
try:
print("step开始了")
num = 1/0
except:
with open("e:/88.txt","a") as f:
traceback.print_exc(file=f)
运行结果为:
step开始了
如果错误,欢迎指正
欢迎粘贴复制 评论转发点赞
轻轻一点 好运连连