gpt4 book ai didi

java - 无法理解带有 throws 的外部代码

转载 作者:行者123 更新时间:2023-11-30 06:58:23 26 4
gpt4 key购买 nike

我试图理解其他人编写的一些代码,但不理解那里如何使用“throws”。这是代码:

package test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class WhoisQuery {

public static void main(String[] args) throws Exception {
String domainNameToCheck = "abcnews.com";
performWhoisQuery("whois.enom.com", 43, domainNameToCheck);
performWhoisQuery("whois.internic.net", 43, domainNameToCheck);
}

public static void performWhoisQuery(String host, int port, String query) throws Exception {
System.out.println("**** Performing whois query for '" + query + "' at " + host + ":" + port);

Socket socket = new Socket(host, port);

InputStreamReader isr = new InputStreamReader(socket.getInputStream());
BufferedReader in = new BufferedReader(isr);

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(query);

String line = "";
while ((line = in.readLine()) != null) {
System.out.println(line);
}
}

据我所知,应该以某种方式处理带有 throws 的代码。但是,没有像 try catch 这样的处理机制。那么这里 throws 的确切目的是什么?我测试了它,没有抛出它就返回了 IOexception。

我的问题是:

  1. throws 部分写对了吗?我假设这里应该有一些处理机制,但我没有信心。
  2. 为什么代码现在可以工作,并且在这种状态下没有“抛出”?如果没有 catch/try 语句,它不应该返回错误吗?我没有看到没有“抛出”和没有捕获/尝试的抛出之间的区别。

最佳答案

正如您所指出的,“应该以某种方式处理带有抛出的代码”。但是,try-catch 子句并不是处理 throws 声明的唯一方法。另一种选择是决定您不处理该异常,并简单地向调用方法添加一个 throws 子句。您可以继续添加这些 throws 声明,直到您到达 main,在这种情况下,您实际上是在声明您的程序不处理错误,并且会在这样的情况下毫不客气地崩溃发生错误。

它不优雅或“不合适”,但是,嘿,它有效。

关于java - 无法理解带有 throws 的外部代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com