我的问题是如何处理与从列表中获取数据有关的异常,即如果列表中填充了API,则处理该异常。具体来说,我有一个从API获取所有数据的方法,而在另一个方法中,我想搜索或过滤该数据。但是我希望它在找不到数据时抛出一个异常。我该怎么做?
这是我的密码
public CommitResponse getOneCommitInfo(String commitHash) {
CommitResponse commit = new CommitResponse();
for (int i = 0; i < allCommitsList.size(); i++) {
if (
我有几个关于数据访问层的函数
public Order RetrieveById(int id)
public List<Order> RetrieveByStatus(OrderStatus status)
现在我对异常引发有点迷惑了。
在RetrieveById函数的情况下,id小于1是一个无效的id,因此我想引发一个异常。我想为数据库中不存在的Id返回null。然后我就觉得我把事情复杂化了。
对于RetrieveByStatus,当数据库中没有该状态的数据时,我想返回一个空列表。
然而,我看到有些人在RetrieveById不能返回任何东西的时候引发异常,但是Retrieve
函数大部分时间都不返回,而异常地通过在存储值的地方引发异常返回有用的值,这是Python的好做法吗?
我对此感到有点不安,因为异常通常被用来表示某种问题,而异常的一些属性给出了有关问题的一些细节。在这里,我想要一个例外,实际上意思是“这是这个函数的一个特殊结果”。
对此使用异常是很诱人的,因为(1)只有在特殊情况下才能做到这一点,(2)这是高效的,在Python中(比if … is not None:…更多)。另一方面,异常本身并不是任何类型错误的标志,而是异常返回值的工具。
是否有任何官方建议禁止对函数异常返回值使用例外情况?
PS:下面是一个用例:
对象方法基于新数据更新对象的内部状态
我刚接触过Postgres,并且正在处理数据库间查询等。所有的well...except都在工作:在任何工作的“肉”之前,我想测试相关数据库连接的存在,如果还没有创建它,就会引发异常(并中止脚本)。为此,我有以下代码块:
DO $$
DECLARE
connectionIsGood boolean := (select 'my_connection' = ANY (dblink_get_connections()));
BEGIN
RAISE INFO 'connectionIsGood=%', connec
我想编写一个允许客户端检查数据库是否正在运行的ASP.NET Web端点。
下面的方法是通过建立连接和运行虚拟sql语句来检查数据库是否已启动。如果引发异常,则数据库将关闭。因此,它总是在上升时返回true。
public interface IDatabaseHealthStatus {
bool IsDatabaseUp();
}
public class DatabaseHealthStatus :IDatabaseHealthStatus {
public bool IsDatabaseUp(){
using(var con = new SqlConnec
我经常使用这种模式
bool TryGetX(out X x)
当我需要从可能失败的服务中获取数据时。当客户端和服务都无法知道数据在试图检索之前是否可用时,我就使用它。我从来没有完全满意这样使用out参数,而且我从其他问题中看到,它被认为是一个糟糕的模式。
但是,我还没有看到一个令人信服的替代API,它给客户端一个提示,即他们的方法调用可能实际上不会返回数据。
我考虑过的替代方案:
X GetX(),如果服务不能提供所请求的数据,则GetX()返回null。我不喜欢这样做,因为很多人不清楚他们是否需要检查是否返回null。考虑到我在处理过的遗留代码中遇到的空引用异常的数量,人们经常忽略空检
我正试图在表格中插入一个数据。执行查询后,我将得到一个异常,即
org.postgresql.util.PSQLException: No results were returned by the query.
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:284)
数据插入成功,但我不知道为什么会有此异常??
我想知道在我的Zend Framework + Doctrine 2MVC应用程序中,我应该在哪里抛出异常。
这是我的设计:
数据库- MySQL >对象/对象模型(Doctrine2) >服务>控制器
我的服务在参数中接受服务对象,并返回几乎所有方法的服务响应对象。
服务响应返回状态、消息和数据,这些数据可以是您想要的任何内容。
我的控制器使用这些服务。
我想知道我应该在哪里抛出我的异常。
示例:
public function getAllMembers(ServiceObject $data)
{
// do some mapping with $data
$u
我正在构建一个COM组件C#,客户可以设置二进制数据。如果COM组件返回异常而不是错误代码,那就好了,但意识到在(Delphi,C++和JScritp)中处理异常将是困难的。我选择它接收十六进制的数据(内部转换为二进制),并返回十六进制的数据(内部转换为十六进制)。
方法getData可以返回数据和错误代码,问题是:在C#互操作中如何做到这一点?
在C++ COM中存在HRESULT
HRESULT getData([in] int __position, [out,retval] BSTR* __data); // can Return __data or error -1 data not
我编写了下面的查询,期望在没有找到行时抛出NO_DATA_FOUND异常。
BEGIN
SELECT MAX(A_id) + 1 INTO id_variable from table_A;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SELECT MAX(A_id) + 1 INTO id_variable from table_A_archive;
END;
table_A中没有数据,但是没有抛出异常,最终id_variable值将变为null。我谷歌和注意到MAX函数忽略空值,但我找不到任何补救办法,可以使它抛出异常。
如何使其抛出异常,以便控件用于异
如何使用此查询获取值:
declare
status varchar2(4);
Num number:=0;
begin
select (SELECT MAX(a),b from table Where (id=2) group by b) into Num from dual;
end
我必须将两个列值赋值给声明的变量。以这种方式编写查询,避免数据发现异常。
NOTE:-Consider这个查询将返回两个columns.....So的1-1值,请忽略太多行,异常.
这就是我们的产品场景:
我们正在使用org.apache.tomcat.jdbc.pool.DataSourceFactory,并拥有maxAge of 900000和maxActive of 100。
我们有长数据库操作,由于数据库连接关闭异常,它正在失败。
当我检查日志时,我发现这个异常发生在大约15分钟之后。
所以,这让我怀疑这是否是因为maxAge of 900000。我阅读了Apache和其他博客的文档,但没有找到一个明确的答案:maxAge是否会影响活动数据库连接。
从文档中,我100%肯定的是在将数据库连接移入或移出池时会检查maxAge,但我不确定数据库连接