首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何故意生产ConnectException?

如何故意生产ConnectException?
EN

Stack Overflow用户
提问于 2015-01-04 16:26:34
回答 1查看 219关注 0票数 0

我使用java HttpURLConnection类连接到url,并希望生成ConnectException来监视和记录一些数据。我只是尝试连接随机的网站,但我无法生成ConnectionException,即使我试图访问url,这个url并不存在,但它正在捕获MalformedURLException

来自ConnectException的Java,

http://docs.oracle.com/javase/7/docs/api/java/net/ConnectException.html#ConnectException()

试图将套接字连接到远程地址和端口时发生错误的信号。通常,远程拒绝连接(例如,没有进程侦听远程地址/端口)。

这意味着需要从远程服务器拒绝连接,但我不知道这意味着什么,以及如何从我的java代码中生成连接?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-04 16:39:15

当您试图连接到不存在的URL时,可能会发生两种错误:

  1. 域本身的DNS条目不存在。想想看,www.argh-non-ventant.com vs. . www.google.com
  2. 域存在,not服务器正在侦听,但路径不存在。(http://www.google.de/please-give-my-an-error/)

在这两种情况下,都不会引发ConnectException,因为此异常要求

  1. 域的DNS条目有效,名称解析成功,并且
  2. 在给定的端口上没有运行websever。

ConnectException和套接字基本上驻留在ISO/OSI堆栈的第3层或第4层(即TCP/IP),而格式错误的URL是应用层问题。

您的解决方案:找到一个具有有效DNS条目的服务器,但没有侦听but服务器。::1应该是一个安全的赌注,除非您自己在端口80上托管一个bet服务器。下面是一个最小的工作示例:

代码语言:javascript
复制
package Foo;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class TestClass {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://localhost");
        HttpURLConnection c = (HttpURLConnection)url.openConnection();
        c.connect();
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27767644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档