为什么 $my_item->save 在 Rose::D B::Object 时失败?



我试图做一个简单的数据添加到数据库表(PostgreSQL)。一开始,我甚至连一个简单的

都找不到
$my_item = $_item_class->new(...);

工作。我发现我在代码中拼写的字段与我在"模型"代码中拼写的字段不同。

但是,现在,这是工作的,但是当我尝试:

$my_item->save;

似乎抛出了一个异常。所有这些都发生在eval{…}结构,我想捕获异常,看看出了什么问题,但我不知道如何做到这一点。

为什么像"保存"这样的东西在这里会失败?我已经检查过了,一切似乎都没问题(当然!)。

并且,我如何捕获似乎正在抛出的异常?

谢谢!

这些都是我自己想出来的。这很简单。当我编辑类中的一个字段时,不知怎么地,我复制了它。仅此而已。该类只有在类的哈希表中指定的两个同名字段,它们都具有相同的特征。当我删除其中一个时,代码工作了。

关于如何捕获异常的第二个问题,我必须学习如何使用
if ($@) {
    .
    .
    .
}

在我的"eval{…}"结构。因为我是Perl的新手,所以我不明白这一点。但其实很容易算出来。我的问题是,我正在从一些代码作为模型为我工作,没有这样做,但命名了在其"eval{…}"代码。因此,我认为我必须有可以由Rose::DB::Object调用抛出的异常的名称,但是我在文档中找不到任何这样的异常。当我了解到"if($@){…"}",我就可以在$@中打印出报告的异常,从中我可以看到上面提到的重复字段的问题。

这就是它的全部。现在一切正常。

最新更新