【发布时间】:2013-06-22 14:07:44
【问题描述】:
我有一个正在转换为 Uint32 的字符串^ 在下面的代码中:
try
{
int newX = System::Convert::ToUInt32(this->cbXSizeBox->Text);
}
catch (FormatException^ e)
{
printf("\nNot a valid 3-digit number");
this->cbXSizeBox->Text = System::Convert::ToString(capBoxSize->x);
}
这很好用。(仅供参考 capBoxSize->x 是另一个可以评估为 uint32 的值)。
基本上,如果用户输入除数字以外的任何内容(例如 2g9),则捕获 cbXSizeBox->Text(它是一个字符串)的值,使其恢复为默认值。
如果 catch 块没有捕获格式异常,我想添加代码以将 capBoxSize->x 的值更改为新的有效值。我试图找到对编译器说的东西,“如果你捕捉到这个异常,就这样做。但如果你没有捕捉到异常,就这样做。”是否可以在 if else 语句中包装 catch 块?
如果您了解我想要做什么,任何建议都将不胜感激。
附:我认为将代码更改 capBoxSize->x 放在 try 块中并不是一个真正的选择。因为这可能会尝试将 newX 作为“2ty”分配给 capBoxSize->X,它是一个 Uint32。这可能会导致错误。
【问题讨论】:
-
在询问 C++/CLI 时请使用
c++-cli标签。 -
抱歉,我会改正的。
-
np,我已经编辑了它。它只是为了未来。 C++/CLI 是与 C++ 不同的语言。
-
你能解释一下你的 p.s.更清楚。举个例子吧?
标签: c++ exception-handling c++-cli try-catch