java - 抛出异常是合法的 else 语句吗?
问题描述
我目前正在对一项看似简单的任务感到绝望。
protected Entry<K, V>[] entries;
public V getOrThrow(K k) throws UnknownKeyException
{
for(Entry<K, V> i : entries)
{
if(i.getValue() != null)
{
if(i.getKey().equals(k))
{
return i.getValue();
}
else throw new UnknownKeyException();
}
else throw new UnknownKeyException();
}
}
该方法应该检查一个值是否存在,然后关联的键是否与传递的参数匹配,然后返回该值。否则,将抛出异常。该值属于 V 类型。现在我收到错误消息:“此方法必须返回 V 类型的结果”。所以我想并不是 if 语句的所有情况都包括在内。这是因为例外吗?例外情况甚至是合法的 else 声明吗?或者还能是什么?提前非常感谢!
解决方案
在执行整个 for 循环之前抛出异常。我认为你的代码应该是这样的。
public V getOrThrow(K k) throws UnknownKeyException {
for(Entry<K, V> i : entries) {
if(i.getValue() != null && i.getKey().equals(k)) {
return i.getValue();
}
}
throw new UnknownKeyException();
}
此外,f_puras 指向了正确的方向:entry 变量可能为空,因此您应该在调用该方法之前检查它。
推荐阅读
- javascript - Ext.Viewport.add 没有居中的真值就不能很好地工作
- angular - 为什么 DI 在 Angular 的类 Constructor 中完成?
- amazon-ec2 - Terraform:找不到变量“aws_instance.id”的资源“aws_instance”
- hyperledger-fabric - 对等节点开始抛出找不到默认的pkcs11 BCCSP错误
- reactjs - 如何停止 XMLHttpRequest 刷新页面
- c# - 无法创建 ViewModel 类型的实例
- java - Payara 5 上的 Spring-Boot Rest Controller 忽略 JAXB 注释
- java - 线程新手:一个接一个地加入线程并发
- php - Laravel - 可选的 where 和 whereJsonConatins 无法正常工作
- nginx - 如何使用 OpenResty (nginx) 减少数据访问时间