草庐IT

try-catch-else

全部标签

java - Java 的 try-with-resources 是捕获错误还是捕获异常?

我有一些junit测试,它们创建了一些也应该关闭的资源。实现此逻辑的一种方法是使用@Before和@After方法。我所做的是将创建封装在某个实用程序类中以供重用。例如:classUserCreatorTestUtilimplementsAutoClosable{Usercreate(){...}voidclose(){...}}重点是对象自己关闭,而不是需要记住在@After中关闭它。用法应该是:@Testvoidtest(){try(UserCreatorTestUtiluserCreatorTestUtil=newUserCreatorTestUtil()){Useruser=u

java - Java 的 try-with-resources 是捕获错误还是捕获异常?

我有一些junit测试,它们创建了一些也应该关闭的资源。实现此逻辑的一种方法是使用@Before和@After方法。我所做的是将创建封装在某个实用程序类中以供重用。例如:classUserCreatorTestUtilimplementsAutoClosable{Usercreate(){...}voidclose(){...}}重点是对象自己关闭,而不是需要记住在@After中关闭它。用法应该是:@Testvoidtest(){try(UserCreatorTestUtiluserCreatorTestUtil=newUserCreatorTestUtil()){Useruser=u

java - 当 catch 并没有真正捕捉到任何东西时

这个问题在这里已经有了答案:"Comparisonmethodviolatesitsgeneralcontract!"(13个回答)关闭4年前.由于最近存储在数据库中的错误数据,我遇到了程序崩溃。这让我很困惑,因为我认为我有办法防止这种情况发生。以下代码的目的是比较员工徽章编号并对其进行排序。如果有错误,返回-1并继续前进——不要因为几千个徽章编号中的一个错误而停止:publicintcompare(Employeet,Employeet1){IntegerreturnValue=-1;try{Integertb=Integer.parseInt(t.getBadgeNumber())

java - 当 catch 并没有真正捕捉到任何东西时

这个问题在这里已经有了答案:"Comparisonmethodviolatesitsgeneralcontract!"(13个回答)关闭4年前.由于最近存储在数据库中的错误数据,我遇到了程序崩溃。这让我很困惑,因为我认为我有办法防止这种情况发生。以下代码的目的是比较员工徽章编号并对其进行排序。如果有错误,返回-1并继续前进——不要因为几千个徽章编号中的一个错误而停止:publicintcompare(Employeet,Employeet1){IntegerreturnValue=-1;try{Integertb=Integer.parseInt(t.getBadgeNumber())

java - 是否可以在 catch 中重新分配最终变量,即使分配是 try 中的最后一个操作?

我很相信这里finalinti;try{i=calculateIndex();}catch(Exceptione){i=1;}i如果控制到达catch-block,则不可能已经分配。然而,Java编译器不同意并声称thefinallocalvariableimayalreadyhavebeenassigned.我在这里仍然缺少一些微妙之处,还是这只是Java语言规范用来识别潜在重新分配的模型的一个弱点?我主要担心的是Thread.stop(),这可能会导致“凭空”抛出异常,但我仍然不明白在赋值后如何抛出异常,这显然是tryblock中的最后一个操作。如果允许,上面的成语将使我的许多方法

java - 是否可以在 catch 中重新分配最终变量,即使分配是 try 中的最后一个操作?

我很相信这里finalinti;try{i=calculateIndex();}catch(Exceptione){i=1;}i如果控制到达catch-block,则不可能已经分配。然而,Java编译器不同意并声称thefinallocalvariableimayalreadyhavebeenassigned.我在这里仍然缺少一些微妙之处,还是这只是Java语言规范用来识别潜在重新分配的模型的一个弱点?我主要担心的是Thread.stop(),这可能会导致“凭空”抛出异常,但我仍然不明白在赋值后如何抛出异常,这显然是tryblock中的最后一个操作。如果允许,上面的成语将使我的许多方法

java - 为什么 try-with-resource 需要一个局部变量?

引用我的问题AnyriskinaAutoCloseablewrapperforjava.util.concurrent.locks.Lock?,我想知道为什么try-with-resource-statement需要一个named局部变量。我目前的使用情况如下:try(AutoCloseableReentrantReadWiteLock.Lockl=_lock.writeLock()){//dosomething}变量l在tryblock内未使用,只会污染命名空间。据我所知,类似的C#using语句不需要局部命名变量。由于在tryblock结束时关闭了匿名局部变量,是否有任何原因无法支

java - 为什么 try-with-resource 需要一个局部变量?

引用我的问题AnyriskinaAutoCloseablewrapperforjava.util.concurrent.locks.Lock?,我想知道为什么try-with-resource-statement需要一个named局部变量。我目前的使用情况如下:try(AutoCloseableReentrantReadWiteLock.Lockl=_lock.writeLock()){//dosomething}变量l在tryblock内未使用,只会污染命名空间。据我所知,类似的C#using语句不需要局部命名变量。由于在tryblock结束时关闭了匿名局部变量,是否有任何原因无法支

java - lambda 中的无限 while 循环内的 Thread.sleep 不需要 'catch (InterruptedException)' - 为什么不呢?

我的问题是关于InterruptedException,它是从Thread.sleep方法抛出的。在使用ExecutorService时,我注意到一些我不理解的奇怪行为;这就是我的意思:ExecutorServiceexecutor=Executors.newSingleThreadExecutor();executor.submit(()->{while(true){//DOSOMETHINGThread.sleep(5000);}});使用此代码,编译器不会给我任何错误或消息,告诉我应该从Thread.sleep捕获InterruptedException。但是当我试图改变循环条件

java - lambda 中的无限 while 循环内的 Thread.sleep 不需要 'catch (InterruptedException)' - 为什么不呢?

我的问题是关于InterruptedException,它是从Thread.sleep方法抛出的。在使用ExecutorService时,我注意到一些我不理解的奇怪行为;这就是我的意思:ExecutorServiceexecutor=Executors.newSingleThreadExecutor();executor.submit(()->{while(true){//DOSOMETHINGThread.sleep(5000);}});使用此代码,编译器不会给我任何错误或消息,告诉我应该从Thread.sleep捕获InterruptedException。但是当我试图改变循环条件