#一个简单的错误捕捉
try:
print('aa' + 1)
except:
print("error!")
'''
以下接收具体错误类型
ZeroDivisionError与TypeError都是基类Exception基类的成员
并且定义变量e用来接收具体错误信息
来显示更多的错误信息
'''
try:
r = 10/0
print(r)
except TypeError as e:
print("typeError:",e)
except ZeroDivisionError as e:
print("ZeroDivisionError",e)
else:
print("no error!")
'''
以下创建一个新的异常类,继承于基类Exception
'''
class MyError(Exception):
def __init__(self,value):
self.value = value
def __str__(self):
#repr()函数将对象解释为供解释器读取的形式
return repr(self.value)
try:
'''
当程序出现错误的时候,pyhton会自动的引发异常。
也可以由raise显现的引发异常,一旦执行raise语句,之后的语句就不能再执行了
'''
raise MyError(110)
except MyError as e:
print(e.value)
'''
raise
'''
try:
s = None
if s == None:
print("s是空对象")
raise NameError
print(len(s))
except TypeError as e:
print("空对象没有长度!")
except:
print("error!")
#触发自定义异常
try :
file = input("请输入文件的名字:")
if file == 'hello':
raise NameError("错误的文件!")
except:
print("error!")
'''
try finally
不管发没发生异常,finally中的代码一定要执行
比如关闭文件
'''
'''
执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
如果没有发生异常,则执行else块代码
'''
'''
Python的异常处理能力是很强大的,可向用户准确反馈出错信息。
在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。
所有异常都从基类Exception继承,而且都在exceptions模块中定义。
Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。
一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。
异常处理就是为了捕捉异常返回有用信息而不程序执行终止的操作
'''