python中的raise
raise作用
python使用raise可以使程序主动抛出异常,该异常可以被try语句所捕获
raise基本语法格式
该语句的基本语法格式为:raise \[exceptionName \[(reason)]]
raise基本用法
raise 语句有如下三种常用的用法:
- raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。
- raise 异常类名称:raise 后带一个异常类名称。该语句引发指定异常类的默认实例。
- raise 异常类名称(描述信息):在引发指定异常的同时,附带异常的描述信息。
代码示例
1 | try: |
当用户输入的不是数字时,程序会进入 if 判断语句,并执行 raise 引发 ValueError 异常。但由于其位于 try 块中,因为 raise 抛出的异常会被 try 捕获,并由 except 块进行处理
1 | class AuctionException(Exception): |
raise AuctionException(e)
就是把原始异常 e 包装成了 AuctionException
异常,这种方式也被称为异常包装或异常转译。
自定义异常类
很多时候,程序可选择引发自定义异常,因为异常的类名通常也包含了该异常的有用信息。所以在引发异常时,应该选择合适的异常类,从而可以明确地描述该异常情况。在这种情形下,应用程序常常需要引发自定义异常。
用户自定义异常都应该继承 Exception
基类或 Exception
的子类,在自定义异常类时基本不需要书写更多的代码,只要指定自定义异常类的父类即可。
下面程序创建了一个自定义异常类:
1 | class AuctionException(Exception): |
上面程序创建了 AuctionException
异常类,该异常类不需要类体定义,因此使用 pass
语句作为占位符即可。
在大部分情况下,创建自定义异常类都可采用与上面程序相似的代码来完成,只需改变 AuctionException
异常的类名即可,让该异常的类名可以准确地描述该异常.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 tcmiku的档案库!
评论