Python可以使用raise手动抛出异常。
看到菜鸟教程里边对 raise 的这个定义的时候,我有点迷茫,我在极力的去避免异常出现,我为什么还要手动抛出异常呢?
1:raise 语句的基本语法格式:
raise [exceptionName [(reason)]]
2:基本使用方法
(1):直接一个raise抛出异常
python
复制代码
try: i = 1 while(i < 10): raise print(i) i += 1 except: print('raise 手动抛出异常')
输出:
bash
bash
复制代码
print('raise 手动抛出异常')
这里需要注意一下,没有指定抛出异常类型得时候,raise默认抛出的是RuntimeError异常
(2):指定抛出异常类型
css
复制代码
i = 1 while(i < 10): raise ValueError print(i) i += 1
报错输出:
复制代码
ValueError
(3):指定抛出异常类型,并附带异常信息
python
复制代码
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抛出异常使用实例
判断用户输入的是否是数字
python
复制代码
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的使用方法的理解
有好的建议,请在下方输入你的评论。