沙滩星空的博客沙滩星空的博客

python抛出异常raise自定义异常Exception

异常的抛出

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

语法:

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

异常抛出示例:

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

异常的捕获

异常捕捉可以使用 try/except 语句。

基本用法

while True:
    try:
        x = int(input("请输入一个数字: "))
        break
    except ValueError:
        print("您输入的不是数字,请再次尝试输入!")

同时处理多个异常

except (RuntimeError, TypeError, NameError):
    # do something......
    pass

分别处理多个异常

最后一个except子句可忽略异常的名称,它将被当作通配符使用。可以处理后,再把异常抛出。

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

自定义异常

异常类继承自 Exception 类,直接继承或间接继承。

class NoSuchElementException(WebDriverException):
    """
    Thrown when element could not be found.
    """
    pass

 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


Python3 错误和异常 https://www.runoob.com/python3/python3-errors-execptions.html
python标准异常 https://www.runoob.com/python/python-exceptions.html
浅谈 Python 抛出异常(raise)、自定义异常(Exception)、传递异常,附:标准异常类 http://php-note.com/article/1834.html
未经允许不得转载:沙滩星空的博客 » python抛出异常raise自定义异常Exception

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址