- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在测试我的代码,我认为这段代码是正确的:
while True:
try:
p = Decimal(raw_input(...))
if ...condition... : break
else: raise ValueError
except ValueError:
print "Error! ..."
但事实并非如此,因为当我输入“a”时,这就是我得到的:
File "multiple.py", line 28, in <module>
precision = Decimal(raw_input(...))
File "/usr/lib/python2.7/decimal.py", line 548, in __new__
"Invalid literal for Decimal: %r" % value)
File "/usr/lib/python2.7/decimal.py", line 3872, in _raise_error
raise error(explanation)
decimal.InvalidOperation: Invalid literal for Decimal: 'a'
ValueError 不会捕获 InvalidOperation。我不希望程序因此停止,我希望它一直要求输入直到满足条件。我该怎么做?
最佳答案
decimal
模块中的信号异常都是decimal.DecimalException
exception class 的子类.您可以捕获以下任何异常来处理 InvalidOperation
异常,从特定到(非常)通用:
decimal.InvalidOperation
decimal.DecimalException
ArithmeticError
Exception
BaseException
ValueError
不在该层次结构中,但捕获 Exception
也会捕获 ValueError
,因为它是一个子类。一般来说,您很少想捕获 BaseException
,因为它会捕获所有 可能的异常,包括 SystemExit
和 MemoryError
。
您可以在同一个处理程序中捕获多个异常:
from decimal import Decimal, DecimalException
while True:
try:
p = Decimal(raw_input(...))
if ...condition... : break
else: raise ValueError
except (ValueError, DecimalException):
print "Error! ..."
会捕获您原来的 ValueError
异常,以及 decimal
模块引发的所有信号异常。
关于python - python 中的 decimal.InvalidOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546357/
我正在尝试读取财务数据并将其存储。我从中获取财务数据的地方以惊人的精度存储数据,但我只对小数点后的 5 位数字感兴趣。因此,我决定在我创建的 Decimal 上使用 t = .quantize(cde
为什么要转换为 2 位小数的数字? x = 369.69 y=decimal.Decimal(x) Decimal('369.6899999999999977262632455676794052124
使用Python 3.5.2 >>> from decimal import Decimal >>> Decimal('12') % Decimal('0.01') Decimal('0.00') >
Application.Run(form); 实际上我试图从我的项目中调用它。我得到了这个异常(exception)。如何解决?我已经在我的项目中调用了另一个 Application.Run(frmB
我在运行这样的程序时总是会遇到这个错误: from decimal import * getcontext().prec =30 b=("2/3") Decimal(b) 错误: Traceback
我在我的项目中做了以下信号: @receiver(pre_save, sender=group1) @disable_for_loaddata def total_closing_group1(sen
我正在测试我的代码,我认为这段代码是正确的: while True: try: p = Decimal(raw_input(...)) if ...condit
查看 Decimal 我尝试将 pi 转换为各种精度。我可以使用下面的前两个选项调用 pi.quantize() 但它会引发 InvalidOperation 与第三个选项。 pi 的精度远不及...
在处理数据库 decimal 数据类型时,我遇到了 Pandas read_sql_query() 函数的问题。在使用 varchar 或 integer 类型时,我对下面相同的代码没有任何问题。 版
我在尝试运行 sinatra 应用程序时遇到错误。我试着用谷歌搜索它,但什么也没有出现。如果你们可以就如何修复它或我做错了什么提供任何建议,那将是很大的帮助。 部分代码出错 def logTow
我正在使用的系列: import pandas as pd from decimal import Decimal, BasicContext df = pd.Series([14978.22, 16
我打算将交付成本添加到项目总价中,但它不起作用。两个字段都是Decimal但它抛出这个错误 InvalidOperation at /orders/ [] .这是交货价格模型 回溯 File "/
我正在尝试使用 phantomjs 执行生成 PDF 文件的命令. 如果我使用命令提示符执行以下命令,一切正常。 C:\phantomjs-2.1.1\bin\phantomjs.exe C:\pha
我正在使用 Flask 和 pymongo 开发一个项目,我有一个用户集合和一个电影集合,其中实例如下: user = {"Email":"[email protected]" , "Comment
嗨当用户选择菜单项时,我从我的主窗体打开这样的窗体。 private void commToolStripMenuItem_Click(object sender, EventArgs e)
我正在测试 Web 核心 API,但收到 500 内部服务器错误。 我的 Controller 上的方法是; [Route("api/property")] public class Property
我正在尝试将背景 AudioPlayer 添加到 Windows Phone 8 应用程序。 我已经创建了主项目和背景音频代理。我在主项目中添加了对后台音频播放器的引用,并将以下内容添加到应用程序 l
我正在尝试将背景 AudioPlayer 添加到 Windows Phone 8 应用程序。 我已经创建了主项目和背景音频代理。我在主项目中添加了对后台音频播放器的引用,并将以下内容添加到应用程序 l
我在 Django 应用程序中使用 Decimal 对象,发现了这个奇怪的错误: ipdb> decimal.Decimal(10) % 1 Decimal('0') ipdb> decima
我有一个 MVC4 Web 应用程序项目,作为更大解决方案的一部分。我也有一个测试项目。我正在处理一堆不会被返工的代码,所以我不能总是做出我想做的更改。 MVC4 Web 应用程序具有“普通” Con
我是一名优秀的程序员,十分优秀!