我应该在虚线上捕捉的例外是什么?

时间:2009-09-14 21:26:21

标签: java exception

我在学校遇到问题。我是编程的新手,我需要一些帮助。请填写虚线:

import java.net.*; 
import java.io.*
public class Test{
public static void main (String arg[]} 
    int x=0;
    try { 
        ServerSocket s=new ServerSocket ( k ); 
        s.close();
    } 
    catch (..........................) {x++;}
    catch(IOException e) {}
    }
    System.out.println( "Total "+ x); }
}

7 个答案:

答案 0 :(得分:4)

在文档中查找ServerSocket的构造函数可以抛出的异常以及ServerSocket的close函数可以抛出的异常。其中一个可能是IOException,只需查看其他内容。

答案 1 :(得分:3)

提示:如果您使用现代IDE,它会告诉您。例如,只需在没有try和catch块的情况下编写

import java.net.*; import java.io.*
public class Test{
public static void main (String arg[]} 
    int x=0;
    ServerSocket s=new ServerSocket ( k ); 
    s.close();
    System.out.println( "Total "+ x); }
}

IDE将为代码加下划线并给出建议,点击它并自动插入相应的例外。

答案 2 :(得分:2)

答案可以在您使用的ServerSocket constructor的JavaDoc中找到。

答案 3 :(得分:2)

您需要捕获(或声明您的方法抛出)每个由您调用的代码声明的Checked Exception。这些内容记录在JavaDoc和方法签名中。 <{1}}等未经检查的例外情况不需要被捕获。

答案 4 :(得分:0)

如果您使用IDE(例如Eclipse),则可以轻松解决这些问题以及其他许多问题,因为IDE会指出需要捕获的异常情况,从而避免您前往Javadoc页面,方便,可以直接从IDE中轻松访问。

@akf:这不是某些主要CS学校的教师的意见。例如,斯坦福大学的"Introduction to Computer Science | Programming Methodology"课程使用Eclipse的修改版本。我认为这是一种更好的学习语言的方法,避免了解决问题,编译,然后修复新问题的情况。这对新手来说可能是令人沮丧的。 IDE只是一种帮助编程的工具,它不会导致依赖性,如果没有它,它肯定不会阻止你进行编码。

但我同意,就使用javajavac而言,了解基本知识非常重要,以防万一你发现自己面前有一个终端。

答案 5 :(得分:0)

要编译代码,该行应为:

catch (StackOverflowError exc) {x++;}

答案 6 :(得分:0)

正如你在Henri评论中提到的那样,你必须在SecurityException或IllegalArgumentException之间做出选择。

这里的意义在于变量x。什么是x应该算什么?我的猜测是前者,但你的任务应该有一个暗示。

(顺便说一下:除文档中的IOException外,我只看到提及SecurityException)