针对是否CompletionStage总是将异常包装在CompletionException中?和是否异常报告array这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.conn.Manag
针对是否CompletionStage总是将异常包装在CompletionException中?和是否异常报告array这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.conn.ManagedClientConnectionImpl@604ed9f0 java.net.ConnectException: Connection refused: connect、android studio 4.1 中的 MultipleCompilationErrorsException、AutoCompleteTextView onCommitCompletion 不起作用、bash-completion – 在第一次调用命令时定义的completion函数等相关知识,希望可以帮助到你。
本文目录一览:- 是否CompletionStage总是将异常包装在CompletionException中?(是否异常报告array)
- .conn.ManagedClientConnectionImpl@604ed9f0 java.net.ConnectException: Connection refused: connect
- android studio 4.1 中的 MultipleCompilationErrorsException
- AutoCompleteTextView onCommitCompletion 不起作用
- bash-completion – 在第一次调用命令时定义的completion函数
是否CompletionStage总是将异常包装在CompletionException中?(是否异常报告array)
该CompletionStage的Javadoc状态:
[…]如果阶段的计算由于(未经检查的)异常或错误而突然终止,则所有需要完成该过程的从属阶段也会异常完成,并且CompletionException将异常作为其原因。
看到异常完成总是将异常包装在CompletionException
为什么中exceptionally()
,whenComplete()
并且handle()
将异常表示为Throwable
而不是CompletionException
?
这很重要,因为它可以防止人们直接在这些方法中引发异常。
这些方法是否可能收到除以外的其他异常CompletionException
?还是我可以安全地强制使用这种类型的演员?
(我在本地运行了一些测试,并浏览了CompletableFuture源代码,乍看之下,我不知道如何抛出任何其他类型的异常。)
答案1
小编典典这些方法是否可能收到除以外的其他异常
CompletionException
?
是的,有可能,并且您不应该CompletionException
未经instanceof
检查(或检查使用情况)而投身到。
举个例子
CompletableFuture<Void> root = new CompletableFuture<>();root.whenComplete((v, t) -> { System.out.println(t.getClass()); // class java.io.IOException});root.completeExceptionally(new IOException("blow it up"));
whenComplete
将收到IOException
而不是CompletionException
包装它。同样的行为适用于exceptionally
和handle
。
阶段的计算在Javadoc中定义:
由一个阶段执行的计算可被表达为一个
Function
,Consumer
或Runnable
根据(使用名称,包括应用,接受或运行,分别方法)是否需要参数和/或产生的结果。
我相信这句话
如果阶段的计算由于(未经检查的)异常或错误而突然终止
指的是其中的一个Function#apply
,Consumer#accept
或Runnable#run
方法突然终止,因为一个的抛出的异常,而不是因为一个阶段格外通过一些其他机制完成。
另请注意,Javadoc说
该界面未定义用于初始创建,强制正常或 异常
强制完成,探查完成状态或结果或等待阶段完成的方法。的实现CompletionStage
可以酌情提供实现这种效果的手段
换句话说,该接口允许实现在不突然终止任何计算的情况下出色地完成阶段。我认为这允许新的行为。
如果我们从以前扩展我的例子
CompletableFuture<Void> root = new CompletableFuture<>();CompletableFuture<Void> child = root.whenComplete((v, t) -> { System.out.println(t.getClass()); // class java.io.Exception});child.whenComplete((v, t) -> { System.out.println(t.getClass()); // class java.util.concurrent.CompletionException});root.completeExceptionally(new IOException("blow it up"));
您会注意到随附的完成文件会child
收到CompletionException
原始文件的包装IOException
。从Javadoc来看,这对我来说并不明显
返回一个新的,
CompletionStage
具有与该阶段 相同的 结果或 异常
总而言之,似乎来自a的原始异常completeExceptionally
被传递给直接的从属,而从属的从属却收到一个封闭的CompletionException
。
.conn.ManagedClientConnectionImpl@604ed9f0 java.net.ConnectException: Connection refused: connect
DEBUG 2016-11-07 14:32:47,518 Get connection for route {}->http://127.0.0.1:8087->http://rdsearch.zhaopin.com:80DEBUG 2016-11-07 14:32:47,519 Connecting to 127.0.0.1:8087
DEBUG 2016-11-07 14:32:48,530 Connection org.apache.http.impl.conn.DefaultClientConnection@91161c7 closed
DEBUG 2016-11-07 14:32:48,531 Connection org.apache.http.impl.conn.DefaultClientConnection@91161c7 shut down
DEBUG 2016-11-07 14:32:48,532 Releasing connection org.apache.http.impl.conn.ManagedClientConnectionImpl@604ed9f0
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
android studio 4.1 中的 MultipleCompilationErrorsException
如何解决android studio 4.1 中的 MultipleCompilationErrorsException?
您好,每次创建项目时,我都会遇到以下问题:Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup Failed:
。
我尝试更改 gradle 版本,但没有用。
解决方案必须适用于android studio 4.1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
AutoCompleteTextView onCommitCompletion 不起作用
如何解决AutoCompleteTextView onCommitCompletion 不起作用?
我正在创建一个带有一堆用于帐户注册的片段的应用程序,其中每个片段都允许输入一段数据(即不是一个长表格,而是多个片段,每个片段都询问一两个问题,并且附加所有片段到一项活动)。为了保持 UI 状态,我在片段之间使用共享视图模型,并在 onCreateView(...) 中检查此视图模型的值并相应地更新 UI,并将值保存到每个片段的 onPause() 中的视图模型
我的问题是使用过去的数据在 AutoCompleteTextView 中“重新填充”。
if (model.hasUser()) { model.getUser().observe(getViewLifecycleOwner(),user -> { String gender = ((Respondent)user).getGender(); if (!gender.equals("")){ if (Arrays.asList(getResources().getStringArray(R.array.genders)).contains(gender)){ et_gender.showDropDown(); et_gender.onCommitCompletion(new CompletionInfo(0,Arrays.asList(getResources().getStringArray(R.array.genders)).indexOf(gender),gender)); } else { et_gender.showDropDown(); et_gender.onCommitCompletion(new CompletionInfo(0,4,"Other")); et_gender_other.getEditText().setText(gender); } } }); }
@H_301_7@这里的问题是
onCommitCompletion
,它调用 AutoCompleteTextView 的 onClickListener,但传入的位置值为 -1,而不是实际位置。一个简单的解决方法是将 onClickListener 的方法放在它自己的方法中并简单地调用它,但我宁愿让它以这种方式工作。有人知道出了什么问题吗?解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
bash-completion – 在第一次调用命令时定义的completion函数
当我添加这一行时,它可以工作:
complete -o bashdefault -o default -o nospace -F _scp scp_using_rsync 2>/dev/null || complete -o default -o nospace -F _scp scp_using_rsync
唯一的问题是我注意到,_scp在我的bash环境中定义,只有在我尝试使用ssh / scp在该shell中至少执行一次tab-completion之后.所以,如果我在新shell中直接运行scp_using_rsync,我会得到_scp not found错误.
在为ssh或scp命令尝试制表符完成之前和之后,新shell中的typeset -F输出清楚地表明在第一次尝试制表符完成后定义了以下函数:
$diff ~/.scratch/file1 ~/.scratch/file2 224a225,227 > declare -f _scp > declare -f _scp_local_files > declare -f _scp_remote_files 226a230 > declare -f _sftp 230a235,240 > declare -f _ssh > declare -f _ssh_ciphers > declare -f _ssh_macs > declare -f _ssh_options > declare -f _ssh_suboption > declare -f _ssh_suboption_check
这些函数似乎在我的系统中的/usr/share / bash-completion / completions / ssh中定义.
这些是我的两个相互关联的问题:
> bash如何确定自动获取定义的位置,并在首次尝试完成时定义它们?
>我应该如何以类似的方式将scp_using_rsync的bash-completion链接到scp的bash完成?
New complete/compgen/compopt -D option to define a `default’ completion:
a completion to be invoked on command for which no completion has been
defined. If this function returns 124,programmable completion is
attempted again,allowing a user to dynamically build a set of completions
as completion is attempted by having the default completion function
install individual completion functions each time it is invoked.
bash的手册有一个例子:
_completion_loader() { . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 } complete -D -F _completion_loader
关于是否CompletionStage总是将异常包装在CompletionException中?和是否异常报告array的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.conn.ManagedClientConnectionImpl@604ed9f0 java.net.ConnectException: Connection refused: connect、android studio 4.1 中的 MultipleCompilationErrorsException、AutoCompleteTextView onCommitCompletion 不起作用、bash-completion – 在第一次调用命令时定义的completion函数的相关信息,请在本站寻找。
本文标签: