import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class ImageGreet{
public static void main(String []args){
URL imageLocation = new URL("http://horstmann.com/java4everyone/duke.gif");
JOptionPane.showMessageDialog(null,"Hello","Title",JOptionPane.PLAIN_MESSAGE,new ImageIcon(imageLocation));
}
}
但是我的朋友说他用同样的代码做对了。 什么是我的代码?是因为互联网连接(我使用的是拨号连接) 我
答案 0 :(得分:3)
Java使用checked Exceptions
的概念。您需要将此代码放在try/catch
块中,因为它必然会抛出MalformedURLException
。像
URL imageLocation = null;
try {
imageLocation = new URL("http://horstmann.com/java4everyone/duke.gif");
} catch (MalformedURLException mue) {
mue.printStackTrace();
}
或者让main
方法throws
与Exception
类似:
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class ImageGreet{
public static void main(String []args) throws MalformedURLException {
URL imageLocation = new URL("http://horstmann.com/java4everyone/duke.gif");
JOptionPane.showMessageDialog(null,"Hello","Title",JOptionPane.PLAIN_MESSAGE,new ImageIcon(imageLocation));
}
}
答案 1 :(得分:2)
使用try和catch块
捕获MalformedURLException try {
URL imageLocation = new URL("http://horstmann.com/java4everyone/duke.gif");
JOptionPane.showMessageDialog(null,"Hello","Title",
JOptionPane.PLAIN_MESSAGE,new ImageIcon(imageLocation));
}
catch (MalformedURLException e) {
// new URL() failed
// ...
}
答案 2 :(得分:1)
您的互联网连接不会导致该例外。 (如果您的URL不存在,Java会根据URLConnection documentation抛出IOException,可能是FileNotFoundException。)实际上,您的代码根本不会抛出异常!您所看到的是编译错误:
$ javac ImageGreet.java
ImageGreet.java:7: error: unreported exception MalformedURLException; must be caught or declared to be thrown
URL imageLocation = new URL("http://horstmann.com/java4everyone/duke.gif");
^
1 error
当Java试图将您的程序从源代码转换为机器代码时,它会发现问题,因此它会停止并要求您修复它。您的代码尚未运行 - Java警告您程序的源代码存在问题。 (如果您正在运行IDE,这将显示在“问题”窗格中,而不是来自javac的错误消息。)
问题是您需要在代码中捕获MalformedURLException,或声明main
抛出MalformedURLException。例如:
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class ImageGreet{
public static void main(String []args) throws MalformedURLException {
URL imageLocation=new URL("http://horstmann.com/java4everyone/duke.gif");
JOptionPane.showMessageDialog(null,"Hello","Title",JOptionPane.PLAIN_MESSAGE,new ImageIcon(imageLocation));
}
}
请注意,我已在主方法的末尾添加了throws MalformedURLException
,这是我上面提到的解决方案的后一种方法。这告诉Java你的main方法可能传播一个MalformedURLException类型的异常。
答案 3 :(得分:0)
由于Java已检查异常,因此必须将MalformedURLException抛出到方法头,或者必须在try / catch块中编写方法逻辑。