跟踪Java中NullPointerException根本原因的策略?

跟踪Java中NullPointerException根本原因的策略?,java,multithreading,exception,nullpointerexception,Java,Multithreading,Exception,Nullpointerexception,在追踪Java中NullPointerExceptions的根本原因方面,有没有公认的最佳实践/策略,特别是在线程方面 背景:我有一个线程应用程序,它使用Apache的HttpClient4.2,当我们调用HttpClient的execute方法时,我们不时会看到出现一个空指针。(“似乎是什么”,因为返回值只是null)我知道所有线程都使用相同的PoolgClientConnectionManager共享相同的HttpClient(感谢System.out.println(HttpClient)

在追踪Java中
NullPointerException
s的根本原因方面,有没有公认的最佳实践/策略,特别是在线程方面


背景:我有一个线程应用程序,它使用Apache的
HttpClient
4.2,当我们调用
HttpClient
的execute方法时,我们不时会看到出现一个空指针。(“似乎是什么”,因为返回值只是
null
)我知道所有线程都使用相同的
PoolgClientConnectionManager
共享相同的
HttpClient
(感谢
System.out.println(HttpClient)
,打印出引用),但我们似乎仍然在库中遇到与线程相关的错误(可能是因为我们做错了什么)。虽然我很想找到解决这个特定问题的方法,但我更感兴趣的是找到
NullPointerException
s根本原因的一般方法-正如我所说,特别是对于线程,如果异常被抛出到库的深处,则更感兴趣。

如果第三方库抛出异常或转换嗯,你可以连接到一个线程。也可能会有帮助


UPD:只是一个建议。是否可以使用自定义类加载器替换标准java异常类?

我想说,看看错误?线程问题本质上归结为:您访问了共享状态(通常是变量)如果没有正确的同步,当您使用它/读取它的值时,您会得到一个不正确的结果。因此(i)找到空值的来源,(ii)确定在生成空值的代码中共享哪些变量(iii)确定是否存在同步问题(我跳过了明显的(0)确保代码在单线程环境中正确无误)这个错误可能没有你想象的那么有用,当一个null是原因的时候要早得多,通过各种方法传递,这些方法对null都很满意,然后最终在stacktraces上找到了一些在itLog上结焦的东西。一旦你找到了一个,向后检查该方法是否存在非同步/易失性/最终变量我看到的httpclient中NPE的原因是什么对多个请求使用共享HttpContext。如果使用HttpContext,则为每个请求创建一个新的HttpContext。如果它接受了异常,则未捕获的ExceptionHandler将不会做任何事情。谢谢你,Noofiz。关于使用类加载器来实现这一点,你有任何建议阅读(链接)吗?不,抱歉,这只是一个建议。