Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在番石榴中提供缺勤自定义消息可选。get()_Java_Guava - Fatal编程技术网

Java 在番石榴中提供缺勤自定义消息可选。get()

Java 在番石榴中提供缺勤自定义消息可选。get(),java,guava,Java,Guava,我有一个返回可选值的方法。如果调用方在缺少可选值时执行get(),我想定制抛出的异常,以包括一些上下文信息。当前不存在。get()将简单地抛出新的IllegalStateException(“值不存在”)(而且锁得很整齐!) 这里有建议的最佳实践吗 我想象的是类似于可选的.absentThrowing(字符串消息)的东西,它返回一个缺席的,在异常中有一个自定义消息——并且可能是变体,使用供应商为什么我们应该有可选的.absentThrowing(“出汤”) 我们不能直接抛出相应的异常吗?Smth

我有一个返回
可选值的方法。如果调用方在缺少可选值时执行
get()
,我想定制抛出的异常,以包括一些上下文信息。当前
不存在。get()
将简单地
抛出新的IllegalStateException(“值不存在”)(而且锁得很整齐!)

这里有建议的最佳实践吗


我想象的是类似于
可选的.absentThrowing(字符串消息)
的东西,它返回一个
缺席的
,在异常中有一个自定义消息——并且可能是变体,使用
供应商为什么我们应该有可选的.absentThrowing(“出汤”)

我们不能直接抛出相应的异常吗?Smth。就像这样:

if (kitchen.isOpen()) {
   if (soupQ.isEmpty()) {
    return throw new IllegalStateException("out of soup");
   }
return Optional.of(soupQ.remove());
}
return throw IllegalStateException("kitchen closed");

我认为最好抛出一个特定的异常,因为它将更直观地说明什么是错误的。非法状态异常并不适用于所有情况。

我不希望返回
Optional
的方法立即抛出错误。仅当调用者试图访问空
可选
的内容时,它才应抛出。也就是说,调用者可以决定在给定的情况下是否允许
可选的
optional.or(Optional.absentThrowing("no soup for you")).get()
if (kitchen.isOpen()) {
   if (soupQ.isEmpty()) {
    return throw new IllegalStateException("out of soup");
   }
return Optional.of(soupQ.remove());
}
return throw IllegalStateException("kitchen closed");