考虑以下一般形式的函数:
Foo findFoo(Collection<Foo> foos, otherarguments)
throws ObjectNotFoundException {
for(Foo foo : foos){
if(/* foo meets some condition*/){
return foo;
}
}
throw new ObjectNotFoundException();
}
User findUserByName(Collection<User> users, String name)
throws ObjectNotFoundException {
for(User user : users){
if(user.getName().equals(name)){
return user;
}
}
throw new ObjectNotFoundException();
}
你知道这里是否有一个标准的例外可以使用吗?
可以使用几个异常(例如nosuchelementexception
或illegalargumentexception
),但答案实际上取决于您要传达的语义:
>
nosuchelementexception
通常用于单步执行序列或枚举时,这里的内容是查找。
自定义异常允许您(在javadocs中)准确地说明异常的含义。你也可以声明要检查...如果合适的话。
(但不要想使用unknownUserException
。那将是非常错误的;阅读Javadoc!)
还值得考虑返回null
,特别是如果查找失败很可能是应用程序中相当常见的(非例外)事件。但是,返回null
的缺点是调用方需要检查null
或冒意外的nullPointerException
的风险。实际上,我认为过度使用null
比过度使用异常更糟糕。前者可能导致不可靠的应用程序,而后者“只是”对性能不利。
对于Java8及以后版本,返回optional
会比返回null
更干净。
在这些事情中,重要的是要超越教条,并根据实际环境的要求下定决心。
考虑以下一般形式的函数: 例如,一个具体案例是: 如果找不到对象,这些函数将引发异常。我可以为此创建一个自定义异常类(在示例中为ObjectNotFoundException),但我更愿意使用现有的类。然而,我在标准java库中找不到任何具有这种含义的异常类。您知道这里是否有可以使用的标准异常吗?
问题内容: 考虑以下一般形式的函数: 例如,一个具体案例是: 如果找不到对象,这些函数将引发异常。我可以为此创建一个自定义的异常类(在示例中),但是我更喜欢使用现有的类。但是,我在标准java库中找不到具有此含义的任何异常类。您知道这里是否可以使用标准例外吗? 问题答案: 您知道这里是否可以使用标准例外吗? 有几个例外的是 可以 使用(例如或),但答案实际上取决于你想要传达的语义: 当您单步执行序
我正在尝试使用ColdFusion和JavaLibrary解析CSV文件。我找到了一些示例,但ColdFusion似乎找不到Jar-File。 这是我的代码: 这是错误消息: 我正在使用opencsv库。Jar文件在以下文件夹中: www root/WEB-INF/lib 我还多次重新启动了服务器。 谢谢你的帮助!
我正试图为我的Xamarin编写一个内容提供商。Android应用。 我有我的ContentProvider类(./ContentProviders/SitesProvider.cs): 在我的Androidanifest.xml中,我在元素中添加了以下内容 当我尝试运行我的应用程序时,我收到以下错误消息: JAVAlang.RuntimeException:'无法获取提供程序com。沙马林。样品
问题内容: 我从这篇博客文章中获得了帮助: 但是我发现com.mysql.jdbc.driver类未找到异常。那篇博客文章的不同之处在于,在我的案例中,他们尝试连接到mysql而不是MS SQL。到目前为止,这是我的代码:package com.example.dbtry; 请告诉我我在做什么错。我还在清单中添加了对Internet的许可。 问题答案: 从以下位置下载jar:http://www.
我在将Web应用程序部署到WebLogic服务器12c时遇到问题。Web应用程序依赖于服务jar(内部依赖于Hibernate类)。当我构建战争时,它不包括Web应用程序的WEB-INF/lib/文件夹中的hibernate-entitymanager.jar,并且它的部署失败,例外是“ClassNotFoundExceptionorg.hibernate.ejb.HibernatePeraxy”