草庐IT

try-finally

全部标签

java - 调用 soap 时出现奇怪的错误 - llegalAccessError : tried to access field org. apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaid

一段时间以来我一直在研究soap客户端,但我仍然无法弄清楚。我有这个错误:Exceptioninthread"main"java.lang.IllegalAccessError:triedtoaccessfieldorg.apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaidfromclassorg.apache.cxf.binding.soap.saaj.SAAJStreamWriteratorg.apache.cxf.binding.soap.saaj.SAAJStreamWriter.getPrefix(SAAJStre

java - 先验证还是 try catch ?

假设我有一个如下所示的函数:publicvoidsaveBooking(/*someinputs*/){//saveintodatabase}在保存到数据库之前,我必须做各种验证。我在主程序中可以做的是这样的://doallthevalidationsanddoanynecessaryhandling.Then...saveBooking(/*inputs*/);有了这个,我确信所有数据在保存到数据库之前都必须通过所有要求的验证。但是,这意味着函数saveBooking()密切依赖于验证方法。每次我想调用saveBooking()时,我都必须确保不会忘记调用验证。或者,我可以将所有验证

java - static final char[] 线程安全吗?

如果我有privatestaticfinalchar[]SOME_CHARS;那个线程安全吗?我的意思是,如果我有多个线程引用该数组中的字符(但不更改它们),会出现什么问题吗?例如privateclasssomeThreadextendsThread(){publicvoidrun(){for(inti=0;i换句话说,我是否需要将char[]放入某种支持线程的Java集合中? 最佳答案 如果你在初始化后不更改它们,应该没问题。(请注意,这依赖于它是一个staticfinal变量-初始化类的方式将确保所有线程都能正确看到初始化的数组

Java:错误定义的 finalize 方法会造成内存泄漏

在Java中,如果没有指向x的强引用并且x符合垃圾回收条件,垃圾回收将调用对象x的finalize方法。如果finalize方法永远不会终止,这会导致内存泄漏吗?publicclassX{protectedvoidfinalize(){while(true){}}} 最佳答案 是的,很容易测试publicclassX{protectedvoidfinalize(){while(true){}}publicstaticvoidmain(String[]args)throwsException{while(true){newX();}}

java - java中static final transient的作用是什么?

在我正在处理的代码库中,几乎所有声明为staticfinalString的变量也都声明为transient。所以我有这样的字段:publicstaticfinaltransientStringVERSION="1.0";每当我发现这些transient关键字时,我很想删除它们,因为我认为它没有任何用处。在这种情况下,使用或不使用transient在行为上有什么区别吗? 最佳答案 static字段是隐式transient(当序列化一个static字段时,它的值无论如何都会丢失)。所以确实,不需要同时声明两者。

java.lang.NoClassDefFoundError : when trying to run jar 错误

我有一个使用gradle的springboot项目applyplugin:'java'applyplugin:'idea'applyplugin:'jetty'applyplugin:'war'applyplugin:'org.springframework.boot'repositories{mavenCentral()}dependencies{compile("org.springframework.boot:spring-boot-starter-web:1.5.1.RELEASE"){excludemodule:"spring-boot-starter-tomcat"}com

java - 每个抛出异常的语句的 try/catch 是否被视为反模式?

我目前正在审查同事的Java代码,我看到很多情况下,每个可能抛出异常的语句都被封装在自己的try/catch中。catchblock都执行相同的操作(哪个操作与我的问题无关)。对我来说,这似乎是一种代码味道,我确实记得读过它是一种常见的反模式。但是我找不到任何关于此的引用资料。对于每条抛出异常的语句,try/catch都被视为反模式吗?支持这一点的论据是什么?构造示例:(与原始问题无关,所以请不要介意这个例子的其他问题,因为它只是为了说明我的意思。)publicintfoo(){intx,y=7;try{x=bar(y);}catch(SomeExceptione){return0;}

java - 内部类非final变量java

我需要更改内部类中的变量,但我遇到了臭名昭著的“无法引用在不同方法中定义的内部类中的非最终变量”错误。voidonStart(){bt.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){intq=i;}});}我很快创建了一个包含所有我想要更改的内容的类,并在内部类之外创建了该类的最终版本classtemp{intq;}voidonStart(){finaltempx=newtemp();bt.setOnClickListener(newView.OnClickListener(){publicv

java - `try/catch`具体是怎么工作的

我想深入了解try{}catch{}block和堆栈跟踪是如何工作的。我正在阅读thisgreatarticleaboutexceptionhandlinganti-patterns并找到以下段落:catch(NoSuchMethodExceptione){thrownewMyServiceException("Blah:"+e.getMessage());}Thisdestroysthestacktraceoftheoriginalexception,andisalwayswrong.在那之后我意识到我并不真的知道try/catch是如何工作的。我的理解如下。考虑这个例子:voidt

java - 使用多个 getter 时使用 Try-Catch 而不是空检查

我的问题如下,我有一个很长的Getter,即,objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();由于“糟糕的”数据库/实体设计(有些东西比其他东西引入得晚),发生了getObjectB()、getObjectC()或getObjectD()可以返回NULL。通常我们一直使用空检查,但在这种情况下,我必须使用ObjectBb=objectA.getObjectB();if(b!=null){ObjectCc=b.getObjectC();if(c!=null){ObjectDd=c.getObjec