4-1关于异常抛出问题

4-1关于异常抛出问题

如果通过try catch 处理异常,需要好几处分别处理;

如果用throws 声明异常,只用再调用者处理就可以了。 那么有一个问题。在测试中,处理异常后,无法返回原菜单进行循环了;

*******************************

       **主菜单**             

       1--播放列表管理       

       2--播放器管理       

       0--退出       

*******************************

请输入对应的数字:

a

信息有误

不能再次从键盘接收数据了 


代码如下:

public void test () throws InputMismatchException {

TestDemo td = new TestDemo();

Scanner sc = new Scanner(System.in);

// 需要3个变量接收数据

int input = 0, input1 = 0, input2 = 0;

while (true) {

td.mainMenu();

System.out.println("请输入对应的数字:");

input = sc.nextInt();

if (input == 0) {

break;

}

public static void main(String[] args) {

TestDemo td = new TestDemo();


try {

td.test();

} catch (InputMismatchException e) {

System.out.println("信息有误");

}

我的想法是通过在测试类中  建立一个死循环 :

 while(true) {

try {

td.test();

} catch (InputMismatchException e) {

System.out.println("信息有误");

}

      }

finally {

break;

}

如果按照我这样写的话, 那么死循环,从键盘输入0,还是会进行执行的。 无法实现退出。。我又添加了个finall 语句,这样就可以了。但是再进行后面的代码填写的时候,当把case1 中的信息写好之后我又进行测试 ,测试结果:

*******************************

       **主菜单**             

       1--播放列表管理       

       2--播放器管理       

       0--退出       

*******************************

请输入对应的数字:

1

***************************************

       **播放列表管理**       

       1--将歌曲添加到主播放列表       

       2--将歌曲添加到普通播放列表       

       3--通过歌曲id查询播放列表中的歌曲      

       4--通过歌曲名称查询播放列表中的歌曲       

       5--修改播放列表中的歌曲       

       6--删除播放列表中的歌曲       

       7--显示播放列表中的歌曲       

       9--返回上一级菜单

***************************************

请输入对应的数字:

1

将歌曲添加到主播放列表

请输入要添加歌曲的数量:

a

信息有误

又不能往下循环了。 我把finally块中的break,该成了continue;但是返回的是主菜单的信息,而不是让重新输入的当前菜单的信息:如下

*******************************

       **主菜单**             

       1--播放列表管理       

       2--播放器管理       

       0--退出       

*******************************

请输入对应的数字:

1

***************************************

       **播放列表管理**       

       1--将歌曲添加到主播放列表       

       2--将歌曲添加到普通播放列表       

       3--通过歌曲id查询播放列表中的歌曲      

       4--通过歌曲名称查询播放列表中的歌曲       

       5--修改播放列表中的歌曲       

       6--删除播放列表中的歌曲       

       7--显示播放列表中的歌曲       

       9--返回上一级菜单

***************************************

请输入对应的数字:

1

将歌曲添加到主播放列表

请输入要添加歌曲的数量:

a

信息有误

*******************************

       **主菜单**             

       1--播放列表管理       

       2--播放器管理       

       0--退出       

*******************************

请输入对应的数字:


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2021-02-02 13:57:34

同学你好,如果在方法出抛出异常,然后调用方法时处理异常就会出现这样的情况,发生异常时会返回主菜单;所以同学的试验是合理的,需要分别在键盘输入的位置处理异常,如

http://img1.sycdn.imooc.com//climg/6018e96c097f472506350561.jpg

祝学习愉快~

  • 提问者 rock221 #1

    不能用过throws 声明吗?如果只能通过try catch处理,那么需要处理好多处呢

    2021-02-02 13:59:01
  • 好帮手慕阿园 回复 提问者 rock221 #2

    同学你好,如果使用throws抛出异常,在播放器管理或者列表管理出现异常时会返回主菜单,这样是不符合题目要求的

    这里同学处理三处异常接口,主菜单、以及播放器管理和播放列表管理输入时处理下异常即可,其余位置同学知道如何使用即可

    祝学习愉快~

    2021-02-02 15:07:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师