我试图做一个简单的数据添加到数据库表(PostgreSQL)。一开始,我甚至连一个简单的
都找不到$my_item = $_item_class->new(...);
工作。我发现我在代码中拼写的字段与我在"模型"代码中拼写的字段不同。
但是,现在,这是工作的,但是当我尝试:
$my_item->save;
似乎抛出了一个异常。所有这些都发生在eval{…}结构,我想捕获异常,看看出了什么问题,但我不知道如何做到这一点。
为什么像"保存"这样的东西在这里会失败?我已经检查过了,一切似乎都没问题(当然!)。
并且,我如何捕获似乎正在抛出的异常?
谢谢!
这些都是我自己想出来的。这很简单。当我编辑类中的一个字段时,不知怎么地,我复制了它。仅此而已。该类只有在类的哈希表中指定的两个同名字段,它们都具有相同的特征。当我删除其中一个时,代码工作了。
关于如何捕获异常的第二个问题,我必须学习如何使用if ($@) {
.
.
.
}
在我的"eval{…}"结构。因为我是Perl的新手,所以我不明白这一点。但其实很容易算出来。我的问题是,我正在从一些代码作为模型为我工作,没有这样做,但命名了在其"eval{…}"代码。因此,我认为我必须有可以由Rose::DB::Object调用抛出的异常的名称,但是我在文档中找不到任何这样的异常。当我了解到"if($@){…"}",我就可以在$@中打印出报告的异常,从中我可以看到上面提到的重复字段的问题。
这就是它的全部。现在一切正常。