Sky*_*ion 1 java multithreading exception
我需要抛出异常.唯一的问题是从方法内部启动的线程抛出异常.
这是我的意思的一个例子:
public void connectToWebsite(String URL){
new Thread(){
@Override
public void run(){
openURLConnection(URL);//Throws Malformed URL and IO Exception
}
};
}
Run Code Online (Sandbox Code Playgroud)
这是API的一部分,因此我想允许API的用户处理他们如何选择的异常.但是,我无法connectToWebsite(url)抛出异常,因为在运行中抛出了异常.我无法run()抛出异常,因为它不会覆盖run方法.有没有办法可以在不构建整个新线程类的情况下抛出异常?或者我是否应该坚持用printStackTraces 添加一个捕获?
理想情况下,我想connectToWebsite抛出异常并让用户处理它.但是,这甚至可能吗?如果是这样,怎么样?如果我不能或不应该抛出异常,我应该如何通知用户出错的地方?
有没有办法可以在不构建整个新线程类的情况下抛出异常?或者我应该选择使用printStackTraces添加一个catch?
你可以做几件事.最好的可能是切换到使用an ExecutorService而Callable不是runnable.您可以将您Callable的提交ExecutorService返回给Future.当您调用future.get()它时,如果您的call()方法引发异常,则会抛出异常.它实际上会抛出ExecutionException,异常的原因将是抛出的异常call().
你也可以使用UncaughtExceptionHandler和设置它Thread.然后,如果您进行线程抛出,则将使用异常调用该处理程序.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |