您当前的位置: 首页 >  Python

令狐掌门

暂无认证

  • 2浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python异常

令狐掌门 发布时间:2020-03-16 11:53:05 ,浏览量:2

一 断言

     python断言和C/C++的用法相同,true正常,false错误,例如下面的python代码

assert(False)
assert 1==1    # 条件为 true 正常执行
assert 1==2    # 条件为 false 触发异常
二 异常

     例如,常见的0做除数,会出现异常    a = 2 / 0

     异常信息

Traceback (most recent call last):
in 
    a = 2 / 0
ZeroDivisionError: division by zero

    抛出异常

            Python 使用 raise 语句抛出一个指定的异常。raise语法格式如下:

x = 10
if x > 5:
    raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

            输出信息

                    raise Exception('x 不能大于 5。x 的值为: {}'.format(x)) Exception: x 不能大于 5。x 的值为: 10

       

      异常的格式:

                                                                 try......except......raise

      例如打开文件异常,Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

import sys

try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("Could not convert data to an integer.")
except:
    print("Unexpected error:", sys.exc_info()[0])
    raise

         如果没有myfile.txt将会出现异常,输出如下:

                       OS error: [Errno 2] No such file or directory: 'myfile.txt'

三 用户自定义异常

       你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如:

class MyError(Exception):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return repr(self.value)

        测试代码

try:
    raise MyError(2*2)
except MyError as e:
    print('My exception occurred, value:', e.value)

         结果:

                         My exception occurred, value: 4

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0756s