jjzjj

不要在代码中随便使用try...catch了

前言 📫大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元目录背景js中的try...catchtry...catch运行机制js的事件循环机制try...catch无法捕获异步错误的原因解决方法结语背景之前面某物的时候,遇到了一个有关try...catch的问题,让我印象深刻,这里来记录分享一下。面试官:下面代码有什么问题吗?示例1:try{setTimeout(()=>{thrownewError('err');},200);}catch(err){console.log(err);}示例2:try{Promise.resolve().then(()

java - java库代码在 "normal"处理过程中throw和catch很多异常正常吗?

作为实验,我决定在Eclipse调试器中启用以下断点:Throwable[IncludeSubclasses]:caughtanduncaught。然后我让我的代码(据我所知运行“良好”)在调试器下运行,当我的代码运行时,我惊讶地看到标准J2SE库代码抛出和捕获了几十个异常(我以前不知道)据我所知正常运行。例如,这里只是我发现的一些抛出异常的Java框架函数:URLClassLoader.findClass、FileDirContext.lookup和WebappClassLoader.findClassInternal.这是否被认为是Java应用程序的正常行为?这是我应该调查的事情吗

java - 先验证还是 try catch ?

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

java - 捕获不在本地抛出的异常?

我的问题与trycatchblock的句法行为有关像这样带有一个catch的空tryblockvoidfun(){try{}catch(Exceptione){}}或try{}catch(ArrayIndexOutOfBoundsExceptione){}编译很好但是编译器提示try{}catch(IOExceptione){}为什么编译器允许捕获任何类型为Exception或RuntimeException的东西,而它却提示无法访问带有已检查异常的代码?是因为JVM代码可以抛出那些类型吗?JVM怎么可能在一个空的tryblock中抛出ArrayIndexOutOfBoundsExce

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

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

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

java - Guava 事件总线 : don't catch RuntimeException

我使用guava的EventBus,不幸的是它捕获并记录了事件处理程序抛出RuntimeException时发生的InvocationTargetException。我可以禁用此行为吗? 最佳答案 就目前而言,这是一个深思熟虑的决定,并在EventBus文档中进行了讨论:Handlersshouldnot,ingeneral,throw.Iftheydo,theEventBuswillcatchandlogtheexception.Thisisrarelytherightsolutionforerrorhandlingandshou

java - Java Try/Catch block 的基准测试

我知道在执行程序时进入catchblock会产生一些显着的成本,但是,我想知道进入try{}block是否也有任何影响,所以我开始在谷歌中寻找答案,有很多意见,但是根本没有基准测试。我找到的一些答案是:Javatry/catchperformance,isitrecommendedtokeepwhatisinsidethetryclausetoaminimum?TryCatchPerformanceJavaJavatrycatchblocks但是他们没有用事实回答我的问题,所以我决定自己试试。这就是我所做的。我有一个这种格式的csv文件:host;ip;number;date;stat

java - 当 99% 的时间对象不为空时,空检查与 try/catch

通常我更喜欢空检查。但在当前情况下,我知道大多数情况下我的if条件都会通过,并且很少有对象可能为null的合法情况。此外,负载很大(大约500万次调用/小时)现在我试图从性能角度找出哪种方法更好。已查try/catchvsnullcheckinjava但我的情况很独特。还检查了Whichisfaster,trycatchorif-elseinjava(WRTperformance)但是这一个和上面的都在通用的上下文中,在这些上下文中,通过/失败比率的知识是不可用的。publicvoidprocess(Jobjob){//...somecodewhichprocessesjobSubJo