您身边的网站建设专家
成功案例

【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-资阳高端网站建设-域名申请

日期: 2022-09-21 05:36:39 浏览数:4


​

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


高端!网站定制/设计/优化/二次开发/制作/搭建-资阳高端网站建设

网站建设.png

以下实例中 finally 语句无论异常是否发生都会执行:

实例

try:
    runoob()
except AssertionError as error:
    print(error)
else:
    try:
        with open('file.log') as file:
            read_data = file.read()
    except FileNotFoundError as fnf_error:
        print(fnf_error)
finally:
    print('这句话,无论异常是否发生都会执行。')

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

raise语法格式如下:

raise [Exception [, args [, traceback]]]

以下实例如果 x 大于 5 就触发异常:

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

执行以上代码会触发异常:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    raise Exception('x 不能大于 5。x 的值为: {}'.format(x))Exception: x 不能大于 5。x 的值为: 10

raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。

>>> try:
        raise NameError('HiThere')
    except NameError:
        print('An exception flew by!')
        raise
   
An exception flew by!
Traceback (most recent call last):
  File "<stdin>", line 2, in ?
NameError: HiThere

用户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 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
>>> raise MyError('oops!')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
__main__.MyError: 'oops!'

在这个例子中,类 Exception 默认的 __init__() 被覆盖。

<p异常的类可以像其他的类一样做任何事情,但是通常都会比较简单,只提供一些错误相关的属性,并且允许处理异常的代码方便的获取这些信息。< p="" style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "WenQuanYi Micro Hei", Arial, sans-serif; font-size: 12px; white-space: normal; background-color: rgb(255, 255, 255);">

当创建一个模块有可能抛出多种不同的异


户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 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

>>> raise MyError('oops!')

Traceback (most recent call last):

  File "<stdin>", line 1, in ?

__main__.MyError: 'oops!'

在这个例子中,类 Exception 默认的 __init__() 被覆盖。


当创建一个模块有可能抛出多种不同的异常时,一种通常的做法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类:


class Error(Exception):

    """Base class for exceptions in this module."""

    pass


class InputError(Error):

    """Exception raised for errors in the input.


    Attributes:

        expression -- input expression in which the error occurred

        message -- explanation of the error

    """


    def __init__(self, expression, message):

        self.expression = expression

        self.message = message


class TransitionError(Error):

    """Raised when an operation attempts a state transition that's not

    allowed.


    Attributes:

        previous -- state at beginning of transition

        next -- attempted new state

        message -- explanation of why the specific transition is not allowed

    """


    def __init__(self, previous, next, message):

        self.previous = previous

        self.next = next

        self.message = message

大多数的异常的名字都以"Error"结尾,就跟标准的异常命名一样。


定义清理行为

try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。 例如:


>>> try:

...     raise KeyboardInterrupt

... finally:

...     print('Goodbye, world!')

...

Goodbye, world!

Traceback (most recent call last):

  File "<stdin>", line 2, in <module>

KeyboardInterrupt

以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。


如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。


下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句):


>>> def divide(x, y):

        try:

            result = x / y

        except ZeroDivisionError:

            print("division by zero!")

        else:

            print("result is", result)

        finally:

            print("executing finally clause")

   

>>> divide(2, 1)

result is 2.0

executing finally clause

>>> divide(2, 0)

division by zero!

executing finally clause

>>> divide("2", "1")


高端!网站定制/设计/优化/二次开发/制作/搭建-资阳高端网站建设


上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设:上往建站