异常
异常如果不单独处理,当产品上线时,若出现异常,会导致服务器崩溃。
错误分为:语法错误、异常
ZeroDivisionError
NameError
TypeError
try - except-else-finally
try:会出错的代码
except:匹配异常
else:不抛出异常(try正常执行)下执行
finally:无论有没有异常都要执行
# 异常处理
x = 1
y = 0 # y = '0'
try:
z = x/y
except (ZeroDivisionError, TypeError) as e:
print("Error1: {}".format(e))
except: # except Exception as e
print("Other Error")
else:
print(z) # 若try中正常执行
finally:
print('must execute')
print("end")
except Exception:
非系统异常的任何异常的基类
except:
任何异常的基类(包括系统异常)
当程序中存在多个 except block 时,最多只有一个 except block 会被执行,只有第一个匹配到的 except block 会被执行,其他则被忽略。
自定义异常
继承 Exception 类
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return ("{} is invalid input".format(self.value))
try:
raise MyError(100) # 抛出 MyError这个异常
except MyError as err:
print('error: {}'.format(err)) # error: 100 is invalid input