try:
a = 1
b = 0
c = a/b
except Exception: #(Python3中,Exception类名 可以省略,python2中未知)
print("出现异常")
else:
print("没有异常")
finally:
print("有没有异常,都会执行")
针对不同异常做出处理:
try:
a = 1
b = 2
c = a/b
except ZeroDivisionError:
print("除零错误")
except TypeError:
print("数据类型错误")
except:
print("未知错误")
else:
print(c)
finally:
print("无论出错与否都会执行")
主动抛出异常的例子:
def ArgumentError(name,age):
if type(name) != str:
raise ValueError("姓名必须为字符类型")
elif type(age) != int:
raise ValueError("年龄必须为整数")
else:
return name, age
a = input("请输入姓名")
b = input("请输入年龄")
try:
x = greet(a,b)
except ValueError as error:
print(error.args)
else:
print(x)
finally:
print("输入完成")
异常管理
class ArgumentError(Exception):
def __init__(self, *args, **kwargs):
tmp_args = args + ("参数类型错误",)
super().__init__(*tmp_args, **kwargs)
def greet(name, age):
if isinstance(name, str) == False:
raise ArgumentError("name must be a string type")
if isinstance(age, int) == False:
raise ArgumentError("age must be a int type")
print("my name is {},my age is {}".format(name, age))
name = 1
age = 12
try:
greet(name, age)
except Exception as err:
print(err.args)
finally:
print("介绍完毕")