Python(二十七)python raise语法!

98 阅读2分钟

Python可以使用raise手动抛出异常。

看到菜鸟教程里边对 raise 的这个定义的时候,我有点迷茫,我在极力的去避免异常出现,我为什么还要手动抛出异常呢?

 

1:raise 语句的基本语法格式:

raise [exceptionName [(reason)]]

 

2:基本使用方法

(1):直接一个raise抛出异常

try:
    i = 1
    while(i < 10):
        raise
        print(i)
        i += 1
except:
    print('raise 手动抛出异常')

 

输出:

print('raise 手动抛出异常')

 

这里需要注意一下,没有指定抛出异常类型得时候,raise默认抛出的是RuntimeError异常

 

 

(2):指定抛出异常类型

i = 1
while(i < 10):
    raise ValueError
    print(i)
    i += 1

 

报错输出:

ValueError

 

(3):指定抛出异常类型,并附带异常信息

try:
    i = 1
    while(i < 10):
        raise ValueError('参数错误!')
        print(i)
        i += 1
except ValueError as e :
    print(e)

输出:

参数错误!

 

以上三种使用方法,我们最常用的就是第三种。

经过上边的代码,我好像明白了一个事情,我们为什么要手动抛出异常

手动让程序引发异常,很多时候并不是为了让其崩溃。事实上,raise 语句引发的异常通常用 try except(else finally)异常处理结构来捕获并进行处理。

 

3:raise抛出异常使用实例

判断用户输入的是否是数字

try:
    a = input("请输入一个数:")
    #判断用户输入的是否为数字
    if(not a.isdigit()):
        raise ValueError("a 必须是数字")
except ValueError as e:
    print("引发异常:",e)

输出:

请输入一个数:a

引发异常: a 必须是数字

 

上边的代码是对raise做了一个简单的应用

我在使用PHP的时候,我没有见过PHP有类似python这样的对异常的处理方式(我说的是我没见过,PHP有没有类似的异常处理方式,我还真不清楚),第一次使用raise,好像是打开了另一扇大门,其实跟我之前的处理方式也没有什么区别。

之前是使用if判断,进入判断结构体,说明参数存在异常,即可结束程序,并向前端抛出异常(我做web开发)

Python中的raise也是同样的使用方法,进入判断结构体,说明程序存在异常,抛出异常,由try……except中的except处理这个异常就好。

 

以上是我对python的 raise的使用方法的理解

 

有好的建议,请在下方输入你的评论。