【发布时间】:2012-02-01 09:43:52
【问题描述】:
我有这个程序是用 C++ Builder 6 编写的。我没有写所有的代码,只是写了一些。然而,该语言不是 C++(据我所知)——它看起来更像 Delphi 或 Pascal。所以这就是我将它们全部包含在标签中的原因。
我有一个名为 Oversteering 的 int。
try
{
Oversteering=HoursCounter.ToInt();
}
catch(EConvertError &convertError)
{
Oversteering=0;
}
HoursCounter是一个AnsiString,它是一个int的形式。
因为这是整个代码中唯一的 try/catch 语句(我知道这不太好),而且我在 Delphi/Pascal/??? 中找不到任何好的示例,所以我没有知道它是否写得正确。
好吧,我尝试将字符串转换为 int。有时我会收到此错误:
即发生了名为EConvertError的异常。
所以我的问题是:为什么这个异常没有被 catch 语句捕获?
【问题讨论】:
-
你试过捕捉 const 引用吗?
-
代码sn-p中的语言确实是C++,但是类库与Delphi中使用的基本相同,在某些情况下可能看起来更像Delphi。
-
在您的异常中,它提到“”不是有效的整数值。我假设您从字符串到 int 的转换没有发生,可能是因为空字符串。
-
@JoachimPileborg 谢谢,我现在明白了!
-
顺便说一句:你能使用Delphi函数TryStrToInt()吗?
标签: c++ delphi c++builder pascal