Python异常处理实例教程(捕捉异常、错误)

#一个最简单的异常捕捉(int 和 str 不能做+ )
try:
    print("aaa"+2)
except:
    print("Error!\n")

#以下接收具体错误类型,
#"TypeError""ZeroDivisionError"都是基类Exception的成员,
#并且定义变量e用于接收具体错误信息,
#以显示更多关于异常的信息。
#把"a"换做0,1
try:
    r=10/"a"
    print("result",r)
except TypeError as e:
    print("TypeError:",e,"\n")
except ZeroDivisionError as e:
    print("ZeroDivisionError:",e,"\n")
else:
    print("no error!")

#以下创建一个新的异常类,继承自Exception类
class MyError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)
try:
    raise MyError(824)
except MyError as e:
    print('My exception occurred, value:', e.value,'\n')

#触发自定义异常
filename = input('please input a file name:')
if filename=='hello':
    raise NameError('input file name error! No hello here!')

#以下是try...except和try...finally两种语句的执行规则
''' 执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
    如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
    如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
    如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
    如果没有发生异常,则执行else块代码。'''
''' 执行try下的代码。
    如果发生异常,在该异常传递到下一级try时,执行finally中的代码。
    如果没有发生异常,则执行finally中的代码'''

#补充一点关于try...finally
'''try...finally...子句用来表达这样的情况:
不管捕捉到的是什么错误,无论错误是不是发生,
这些代码必须运行,比如文件关闭等。以下是一个实例: '''
'''try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print("关闭文件")
        fh.close()
except IOError:
    print("Error: 没有找到文件或读取文件失败")'''
'''当在try块中抛出一个异常,立即执行finally块代码。
    finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
    在这个例子中可以看出finally的用处,并不是怎样都会运行所以没有用的东西。'''

#最后一个小总结
'''Python的异常处理能力是很强大的,可向用户准确反馈出错信息。
    在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。
    所有异常都从基类Exception继承,而且都在exceptions模块中定义。
    Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。
    一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。
    异常处理就是为了捕捉异常返回有用信息而不程序执行终止的操作'''

 

内容集合了知乎和各博客,也有一丁点自己补的......找不出来源了。

最新回复(0)
Google XML地图百度 XML地图Google txt地图百度 txt地图17社