问答详情
源自:1-9 经验总结

怎么在第一行命令抛出异常后再从头开始执行程序?

http://img4.mukewang.com/59c0aba100019adf07240515.jpg

http://img4.mukewang.com/59c0aba20001b33107940540.jpg

在main方法的try块中当rt.order(i)抛出异常后,整个try块就停止执行了,直接开始catch异常,所以在try中用循环体重新执行第一行提示语应该是行不通的,那么应该怎样做到抛出异常后能够循环执行程序?

提问者:慕粉3631469 2017-09-19 13:35

个回答

  • xianyinweijue
    2017-11-13 21:58:23

    package com.imooc_third;
    import java.util.Scanner;
    
    public class java19 {
    	public static void main(String[] args) {
    		int a=1;
    	do {
    		int input1=new java19().yi();
    
    		switch(input1) {
    		case 1:
    			String input2=new java19().name();
    			switch(input2) {
    				case "高数": System.out.println("book:高数");break;
    				default : System.out.println("图书不存在!");continue;
    				//这里有个很关键的知识点,continue是无法在switch中起作用的,所以
    				//这里的continue是作用于do while的
    			}
    			break;
    			
    		case 2:			
    			int input3=new java19().xuhao();
    			switch(input3) {
    			case 1: System.out.println("book:数据结构");break;
    			default : System.out.println("图书不存在!");continue;
    			}
    			break;
    			
    		
    		default:System.out.println("命令输入错误!请根据提示输入数字命令!");break;
    		}
    		break;
    		
    	}while(a==1);
    	}
    	
    	
    	public int yi() {
    		try {
    			System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
    			Scanner input = new Scanner(System.in);
    			int input1=input.nextInt();
    			return input1;
    			
    			}catch(Exception e) {
    				return 0;
    			}
    	}
    	
    	public String name() {
    		try {
    			System.out.println("请输入图书名称:");
    			Scanner input = new Scanner(System.in);
    			String input2=input.next();
    			return input2;
    		}catch(Exception e){
    			return "tushu";
    		}
    	}
    	
    	public int xuhao() {
    		try {
    			System.out.println("请输入图书序号:");
    			Scanner input = new Scanner(System.in);
    			int input3=input.nextInt();
    			return input3;
    		}catch(Exception e){
    			return 0;
    		}
    	}
    	
    }

    这是我的程序

  • xianyinweijue
    2017-11-13 21:56:40


    抱着学习的心态来看看,在try块里没有返回值吗,能不能设置成返回值为1,这样在while里写成while(rentbook.start!=1)行吗

    楼主能不能把代码贴下学习学习

  • 慕粉3631469
    2017-09-19 17:08:18

    http://img4.mukewang.com/59c0de0b0001c00e12080845.jpg

    http://img4.mukewang.com/59c0de6d0001ff4c03920478.jpg

    按照你的思路改了,还有一个小问题

  • 雪枫3219033
    2017-09-19 14:53:25

    我认为可以把try-catch块提出来放在一个方法里,然后当异常发生时再执行这个方法就可以了