异常的一般规则是在捕获常规异常之前捕获更具体的异常规则.我有一个案例,关闭服务器抛出SocketException: socket closed来自我的侦听器IOException,但我不想在关闭服务器时向用户显示该消息.其他一切都可能是一个实际的错误,所以应该向他们展示,所以我抓住SocketException,检查它的消息,如果不是socket closed那么它应该被重新捕获并被捕获并作为一个处理IOException.Java/NetBeans 7.0.1似乎不喜欢这样.这是我的代码:
public void run() {
while (runner == Thread.currentThread()) {
System.out.println("waiting for connection...");
try {
Socket s = server.accept(); //throws SocketException/IOException
if (session == null) {
session = new ReceiveSession(s, parent);
} else {
s.close();
}
} catch (SocketException e) {
if (!e.getMessage().equals("socket closed")) {
throw e; //error line, "unreported exception SocketException"
}
} catch (IOException e) {
e.printStackTrace();
parent.showError("Someone tried to connect but the connection …Run Code Online (Sandbox Code Playgroud) 我注意到有些人在将两个字符串比较时似乎有所不同,例如将变量与常量进行比较时.例如,假设我们有一个常量字符串和一个输入方法:
public final String CONSTANT_STRING = "A constant string";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Run Code Online (Sandbox Code Playgroud)
以任何方式更好或更快地首先使用未知输入:
br.readLine().equals(CONSTANT_STRING)
Run Code Online (Sandbox Code Playgroud)
或者将常数与未知数进行比较:
CONSTANT_STRING.equals(br.readLine());
Run Code Online (Sandbox Code Playgroud) 是否有表格显示 SQL Server 2008 的类型如何映射到其自己的导入向导中的数据类型?例如varchar映射到DT_STR,映射到什么bigint?
我说的是这个向导:

我有一个while循环,检查包含要执行的程序的命令的arraylist是否为空.显然它会做一些事情,如果不是空的,但如果它是现在我只有一个Thread.sleep(1000)为其他.这使得与它相互作用的任何东西都相当缓慢.有没有办法让它运行的线程阻塞,直到添加一个新命令?(它运行在它自己的线程中,因此对我来说似乎是最好的解决方案)或者有更好的解决方案吗?