草庐IT

try-except-block

全部标签

java - 我应该对不可变类的突变尝试抛出异常吗?如果是这样,哪个异常(exception)?

我想在开发人员试图改变不可变对象(immutable对象)时提醒他。不可变对象(immutable对象)实际上是可变对象的扩展,并覆盖了该对象上的setter以使其不可变。可rebase类:Vector3publicclassVector3{publicstaticfinalVector3Zero=newImmutableVector3(0,0,0);privatefloatx;privatefloaty;privatefloatz;publicVector3(floatx,floaty,floatz){this.x=x;this.y=y;this.z=z;}publicvoidset

java - 为什么在捕获时使用 IOexception 而不是 Exception?

我似乎无法用正确的措辞来让搜索引擎获取任何有意义的结果。try{BufferedReaderreader=newBufferedReader(newFileReader("foo.bar"));}catch(Exceptione){println(e.getMessage());}所以FileReader只抛出FileNotFoundException,据我了解这是一个IOException,这是一个异常。有人可以解释为什么我会捕获FileNotFoundException或IOException而不是只指定通用“异常”而不必导入异常(即导入java.io.FileNotFoundEx

java - 如果构造函数抛出异常,是否不调用 try-with-resources 习惯用法的 close 方法?

我有一个基类Base和一个扩展它的子类Child。Base实现了java.lang.AutoCloseable。假设Child的构造函数抛出一个Foo。现在考虑try(Basec=newChild()){/*Somecode*/}catch(finalFooe){/*Somemorecode*/}如果抛出异常,是否调用Base#close方法?它不在我的机器上,但这是JLS标准化的东西吗? 最佳答案 是的,close不会被调用。这在JLSsection14.20.3中指定:Resourcesareinitializedinleft-

java - 在 try-with-resource 中手动关闭

假设我使用的是一个文档不完整的第三方库,没有可用的源代码。该库的一种方法接受InputStream来加载各种数据。由于缺少文档,不清楚该方法是否在完成处理后关闭流,因此一种可能的解决方案可能是将调用包装在try-with-resource中,只是为了在安全的一面。不幸的是,Java规范(据我所知)没有提及如果在try-with-resource中手动关闭资源会发生什么。有人碰巧知道吗? 最佳答案 这将完全取决于资源本身的实现。try-with-resource语句是用于在finallyblock中调用close()(并保留异常等)的

java - 在 finally block 中设置 reference = null?

我的一位同事在finallyblock中设置了对null的引用。我认为这是无稽之谈。publicSomethinggetSomething(){JDBCConnectionjdbc=null;try{jdbc=JDBCManager.getConnection(JDBCTypes.MYSQL);...}finally{JDBCManager.free(jdbc);jdbc=null;//你怎么看? 最佳答案 你是对的,jdbc是一个局部变量,所以当getSomething()方法返回时jdbc将超出范围并符合条件垃圾收集实际上与将其

java - 遍历集合时如何防止嵌套同步块(synchronized block)

在多线程Java应用程序中,我需要遍历一组对象。由于集合和对象都可能在我迭代它们时被另一个线程修改,所以我需要使用同步。然而,不推荐使用嵌套的同步块(synchronizedblock),因为它们可能会导致死锁。我该如何解决这个问题?CollectiondataCollection=something.getDataCollection();synchronized(dataCollection){for(finalDatadata:dataCollection){synchronized(data){data.doSomething();//doSomething()changeso

java - Selenium 网络驱动程序 : Element Not Visible Exception

这是我的代码,用于在Website上单击一个简单的登录按钮importjava.util.concurrent.TimeUnit;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.firefox.FirefoxDriver;publicclassReports{publicstaticvoidmain(String[]args){WebDriverdriver=newFirefoxDriver();driver.get("https://platform.

java - 需要权威来源来解释为什么你不应该抛出或捕获 java.lang.Exception

我有一个多小时后的编码标准session,我需要快速回答这个问题。经验丰富的Java程序员的常识是您不会抛出或捕获java.lang.Exception(除了极少数异常(exception)-没有双关语意)。你不这样做的原因是声明catch(java.lang.Exceptionex){...}也会捕获未经检查的异常,在大多数情况下这不是预期的。我们已经有很多由现有团队成员编写的遗留代码,他们在其中捕获java.lang.Exception的子类,记录错误,然后将子类作为java.lang.Exception重新抛出。我需要说服他们他们需要停止编写这样的代码。需要修复使用此反模式的现有

java - 当开关不支持 boolean 数据类型时,为什么 boolean 表达式在 case block 中有效?

昨晚看了一些SCJP认证,开始思考switch语句以及表达式是如何求值的,有点疑惑。Java不会让你打开一个boolean值,所以下面的代码不会编译:publicstaticvoidswitchOnBoolean(booleantheBool){System.out.println("\n\nAssessingboolean:"+theBool);//linebelowwon'tcompile,sincebooleansarenotvalidfortheswitchstatementswitch(theBool){casetrue:{System.out.println("Theboo

java - 在 Java 中,如何将 Exception 强制为 "bubble up"?

我有一个抛出异常的方法,它调用一个抛出异常的方法,等等。所以“抛出异常”的几个方法是菊花链式的。调用子方法的第一个方法将该子方法放在一个try-catchblock中,该block捕获在该调用中抛出的任何Exception。理论上。实际上,该try-catchblock不会捕获任何异常。有办法补救吗?代码如下:try{CSVSingleton.tryToReadBothFiles(FILE1_PATH,FILE2_PATH);}catch(Exceptione){//THISBLOCKNEVERGETSENTEREDBYTHEPATHOEXECUTIONSystem.out.print