Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法捕获异常_Java_Exception_Try Catch - Fatal编程技术网

Java 无法捕获异常

Java 无法捕获异常,java,exception,try-catch,Java,Exception,Try Catch,下面的代码抛出了一个NullPointerException,该异常不是由mytry catch处理的。为什么会这样,我如何处理这个异常 try { URL url = MyTestApp.class.getResource("deliberately_bad_path/icon.png"); Image img = Toolkit.getDefaultToolkit().createImage(url); ImageIcon icon = new ImageIcon(i

下面的代码抛出了一个
NullPointerException
,该异常不是由my
try catch处理的。为什么会这样,我如何处理这个异常

try
{
    URL url = MyTestApp.class.getResource("deliberately_bad_path/icon.png");
    Image img = Toolkit.getDefaultToolkit().createImage(url);
    ImageIcon icon = new ImageIcon(img);
} catch (Exception e)
{
    System.out.println("Okay it was an Exception");
    e.printStackTrace();
} catch (Throwable  e)
{
    System.out.println("Okay it was a throwable");
    e.printStackTrace();
} 
因此,不会捕获异常,并显示以下输出:

获取图像时出现未捕获错误:
java.lang.NullPointerException
位于sun.awt.image.urlmagesource.getConnection(未知源)
位于sun.awt.image.urlmagesource.getDecoder(未知源)
在sun.awt.image.InputStreamImageSource.doFetch(未知源)
位于sun.awt.image.ImageFetcher.fetchloop(未知源)
位于sun.awt.image.ImageFetcher.run(未知源)


错误原因很可能是您向
Toolkit.createImage
传递了空Url


图像加载由
sun.awt.image.ImageFetcher
完成。它在自己的线程中运行(实际上它是从
线程
派生的),因此您的catch块没有捕获它的线程。

错误原因很可能是您向
Toolkit.createImage
传递了空Url



图像加载由
sun.awt.image.ImageFetcher
完成。它在自己的线程中运行(实际上它是从
线程
派生的),因此您的catch块没有捕获它的线程。

使用
测试
而不是
url
来创建图像是否正确?对不起,我在复制它时重命名了一些东西,这只是一个输入错误,现在可以更正。这是完整的堆栈跟踪吗?如果是这样,那么问题很可能是异常不在线程中……您的第二个catch语句会导致编译错误,因为它不可访问。但是如果我移除它,我可以重现这个问题。非常奇怪。首先,您的捕获块顺序是错误的,您需要在一般异常之前捕获更具体的异常。使用
test
而不是
url
来创建图像是否正确?抱歉,复制时我重命名了一些内容,这只是一个输入错误,现在可以更正。这是完整的堆栈跟踪吗?如果是这样,那么问题很可能是异常不在线程中……您的第二个catch语句会导致编译错误,因为它不可访问。但是如果我移除它,我可以重现这个问题。非常奇怪。首先,你的捕获块顺序是错误的,你需要在一般异常之前捕获更具体的异常。捕获得好!如果我转到stacktrace中提到的行,我可以看到
System.err.println(“未捕获错误获取图像:”):)有什么我可以处理的吗?@AshleyMedway在将
url
传递给
createImage
之前,总是检查它是否不为空
Class.getResource
如果找不到资源,则返回null。-因此,还要检查资源文件是否存在。@NathanHughes不幸的是,图像获取程序并不关心UncaughtExceptionHandler。它只执行脏的
e.printStackTrace()
,当然,从
Toolkit开始的整个调用链。createImage
不会检查url参数。很好!如果我转到stacktrace中提到的行,我可以看到
System.err.println(“未捕获错误获取图像:”):)有什么我可以处理的吗?@AshleyMedway在将
url
传递给
createImage
之前,总是检查它是否不为空
Class.getResource
如果找不到资源,则返回null。-因此,还要检查资源文件是否存在。@NathanHughes不幸的是,图像获取程序并不关心UncaughtExceptionHandler。它只执行脏的
e.printStackTrace()
,当然,从
Toolkit.createImage开始的整个调用链不会检查url参数