Tag: try catch

为什么线程在我的actionListener实现中冻结了我的代码?

我试图通过按下按钮(向上,向下,……)顺利地制作一个椭圆形移动,我尝试使用线程与try并在课堂内捕捉它的工作但是当我在这里使用它时会冻结整个应用程序。 class movingdown implements ActionListener{ @Override public void actionPerformed(ActionEvent e){ for (int i = 0; i < frame.getWidth(); i++) { x++; frame.repaint(); try{Thread.sleep(50);}catch(Exception ex){} } } }//movingdown end 这是我的整个代码: package swingWork; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class movingball { JFrame frame; int x=0; int y […]

避免索引超出范围的exception

我正在使用数组列表来存储有关在屏幕上移动对象的数据。 我怀疑这是因为我的渲染器和我的逻辑在不同的线程上运行,但有时当从列表中删除数据时,我得到一个indexOutOfBoundsException。 我已经采取了我能想到的所有步骤来避免这种情况,包括try / catch,但有时会发生exception。 这是我的渲染器线程的一部分,似乎导致exception。 public void drawMobs(GL10 gl) { boolean playing = MyLaunchActivity.getPlaying(); if(playing == true){ try{ ArrayList mobDat = Play.getMobDat(); while (currentLoadSpace < mobDat.size()){ if(!mobDat.isEmpty() || currentLoadSpace < mobDat.size()){ loadObject = mobDat.get(currentLoadSpace); float loadCoordX = Float.parseFloat(mobDat.get(currentLoadSpace + 2)); float loadCoordY = Float.parseFloat(mobDat.get(currentLoadSpace + 3)); /*some rendering*/ currentLoadSpace+=4; } } }catch( ArrayIndexOutOfBoundsException e){ […]

如何在java中继续执行try catch语句

可能重复: Java:Try-Catch-Continue? 我正在从文本文件中读取信息,如果读取的类型无效,我希望我的代码抛出exception。 但是,在找到exception后,我无法弄清楚如何继续我的程序 while(input.hasNext()) { try{ type = input.next(); name = input.next(); year = input.nextInt(); } catch(InputMismatchException ex) { //System.out.println(“** Error: Invalid input **”); //code to make program continue } }

无法有效地使用Java中的Multi Catch

我真的想使用Java-1.7的function。 其中一个function是“Multi-Catch”。 目前我有以下代码 try { int Id = Integer.parseInt(idstr); TypeInfo tempTypeInfo = getTypeInfo(String.valueOf(Id)); updateTotalCount(tempTypeInfo); } catch (NumberFormatException numExcp) { numExcp.printStackTrace(); } catch (Exception exception) { exception.printStackTrace(); } 我想从上面的代码中删除两个catch块,而是使用如下所示的单个catch: try { int Id = Integer.parseInt(idstr); TypeInfo tempTypeInfo = getTypeInfo(String.valueOf(Id)); updateTotalCount(tempTypeInfo); } catch (Exception | NumberFormatException ex) { // –> compile time error ex.printStackTrace(); } 但上面的代码给出了编译时错误: “NumberFormatException”已被替代Exception捕获。 […]

Java Try Catch块

我最初开始在大学编程并学习vb.net。 现在我决定转向Java并进行一些查询。 在vb中,try catch语句的布局如下 try Catch ex as exception finally End catch 但是从java网站( https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html )我发现在java中你使用两个类似的捕获: try { } catch (ExceptionType name) { } catch (ExceptionType name) { } 我希望有人可以解释为什么你需要在Java中捕获两次,以及各自捕获的捕获量是多少。 谢谢。

Java中while(x = false)和while(!x)之间有什么区别?

对不起,我是Java的新手,所以这个问题可能不清楚。 我最近一直在处理在while循环中包含try和catch语句,因为我想确保从程序的其余部分包含输入。 我遇到过一个问题,在while条件下在变量前面使用感叹号(!)(例如while(!done))而不是使用= false(例如while(done = false))改变了我的程序方式运行。 前者(!done)导致try和except语句按预期运行。 后者(done = false)不会,只是跳过它们并转到代码的下一部分。 我的印象是! 在变量意味着与var = false相同之前。 我错了吗? 这是一个例子: import java.util.Scanner; public class TestOne { public static void main(String args[]) { Scanner input = new Scanner(System.in); int num; boolean inputDone = false; while (!inputDone) { try { System.out.print(“Enter in a number here: “); num = input.nextInt(); inputDone = […]

在try / catch中捕获exception后继续执行循环

一旦在此代码中捕获到exception,就会运行menuSystem方法,但是一旦我输入一个数字,程序就会关闭并显示“Build is successful”消息。 一旦发生exception,有没有办法重新进入while循环? public static void main(String[] args) { final UnitResults myUnit = new UnitResults(10, “Java”); int option = menuSystem(); try { while (option != 0) { final Scanner keyb = new Scanner(System.in); System.out.println(“”); switch (option) { } } } catch (Exception InputMismachException) { System.out.println(“\nPlease Enter a Valid Number\n”); option = menuSystem(); } }

当我创建一个类时,我在“try-catch”块中收到“非法启动类型”错误

class address { String address; String newaddr = address.trim(); final int ziplength =4; String input; Scanner in = new Scanner(System.in); String temp = in.next(); String zipcode = input.substring(input.length()-ziplength); try **//illegal start type error** { Integer.parseInt(zipcode); System.out.println(“PO is: “+zipcode); } catch( Exception e) **//illegal start type error** { System.err.println(“Last 4 chars are not a number.”); } […]

当无法分配变量时,可能已经分配了变量

研究这段代码: public class TestFinalAndCatch { private final int i; TestFinalAndCatch(String[] args) { try { i = method1(); } catch (IOException ex) { i = 0; // error: variable i might already have been assigned } } static int method1() throws IOException { return 1; } } 编译器说java: variable i might already have been assigned了java: variable […]

什么时候使用try multi catch?

我不明白何时使用多捕获。 我看到一些post,编译时间类型的多捕获exception是最接近的超类型的多个exception类型。 可以说有exception类型A,B和它们最接近的超类型C. 选项1 try{//whatever} catch(A|B ex){//whatever} 选项2 try{//whatever} catch(C ex){//whatever} 选项3 try{//whatever} catch(A ex){//whatever} catch(B ex){//whatever} 在抛出多个exception时,我们应该在哪些理想情况下使用上述选项?