Eri*_*got 23 python exception raise built-in
用自定义文本引发内置异常是否可以?或者使用自定义文本引发内置警告?
文件内容如下:
exception ValueError:当内置操作或函数接收参数时引发(...)
是否暗示只有内置操作才会引发ValueError异常?
实际上,我知道创建一个继承自ValueError或Exception的异常类是安全的.但是可以不这样做,并直接引发ValueError("自定义文本")?
由于ValueError是内置的,因此与自定义异常类型(类似"ValueErrorSpecificModule",这不是标准的)相比,引发ValueError(使用自定义文本)允许用户快速查看所涉及的问题类型.
mit*_*ndi 26
做以下事情没有任何操作上的错误:
raise ValueError("invalid input encoding")
Run Code Online (Sandbox Code Playgroud)
事实上,当我写一些代码的第一遍时,我经常这样做.这样做的主要问题是代码的客户端在异常处理中很难准确; 为了捕获该特定异常,他们必须对他们捕获的异常对象进行字符串匹配,这显然是脆弱和乏味的.因此,最好引入自己的ValueError子类; 这仍然可以作为ValueError捕获,但也可以作为更具体的异常类捕获.
一般的经验法则是,只要您有以下代码:
raise ValueError('some problem: %s' % value)
Run Code Online (Sandbox Code Playgroud)
您可能应该用以下内容替换它:
class SomeProblem(ValueError):
"""
Raised to signal a problem with the specified value.
"""
# ...
raise SomeProblem(value)
Run Code Online (Sandbox Code Playgroud)
你可能会说,异常类型指定什么地方出了错,而消息/属性指定如何出了问题.
| 归档时间: |
|
| 查看次数: |
4239 次 |
| 最近记录: |