想请教一个自定义异常问题

JAVAkuroro 2011-09-09 11:13:24
本人新手 最近刚看到异常这一章 想写个自定义异常代码 实现的功能:如果是数字超出范围的异常由自定义异常给出,其他异常则有公共异常给出。试着写了下编译时发现自定义异常开始就有 如何改进
下面这个是自定义的异常类 不知道写错没

class Myexception extends Exception {
public static void compute(int a) throws Myexception
{
if(a!=1 || a!=2 || a!=3)
{
throw new Myexception();
}

}
}

下面是测试程序

import java.util.Scanner;
public class GuessFist {

public static void main(String[] args) {
System.out.println("欢迎来到猜拳游戏");
System.out.println("------------------------");
do
{ System.out.println("请选择一个角色进行游戏");
System.out.println("1.孙权");
System.out.println("2.刘备");
System.out.println("3.曹操");
System.out.println("请输入所选角色对应的数字");
try{
Scanner enter = new Scanner(System.in);
int playernum1 = enter.nextInt();
Myexception.compute(playernum1);
break;
}catch(Exception ex){
System.out.println("请从1~3中选择输入数字!!!!");
continue;
}catch(Myexception ex)
{
System.out.println("请从1~3中选择输入数字!!!!");
continue;
}
}while(true);

}
}
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyuhua0066 2011-09-09
  • 打赏
  • 举报
回复
还有异常是没有人会去手动触发的。
liuyuhua0066 2011-09-09
  • 打赏
  • 举报
回复
将两个catch的位置换一下,先catch Myexception再catch Exception
打油的程序员 2011-09-09
  • 打赏
  • 举报
回复


package snake;

import java.util.Scanner;

public class GuessFist {

public static void main(String[] args) {
System.out.println("欢迎来到猜拳游戏");
System.out.println("------------------------");
do {
System.out.println("请选择一个角色进行游戏");
System.out.println("1.孙权");
System.out.println("2.刘备");
System.out.println("3.曹操");
System.out.println("请输入所选角色对应的数字");
try {
Scanner enter = new Scanner(System.in);
int playernum1 = enter.nextInt();
Myexception.compute(playernum1);
break;
} catch (Myexception ex) {
System.out.println("请从1~3中选择输入数字----!!!!");
continue;
} catch (Exception ex) {
System.out.println("请从1~3中选择输入数字!!!!");
continue;
}
} while (true);

}
}

class Myexception extends Exception {
public static void compute(int a) throws Myexception {
/*if (a != 1 || a != 2 || a != 3) {
throw new Myexception();
}*/
if (!(a == 1 || a == 2 || a == 3)) {
throw new Myexception();
}//如果是int型的数,但不是1,2,3

}
}


fujian1115 2011-09-09
  • 打赏
  • 举报
回复
问题1:
class Myexception extends Exception
你仅仅有一个默认构造器,无法在打印异常时给予更多的信息;应该定义下几个标准的构造器;

问题2:
你为什么要在异常中定义决定是否抛出这个异常的方法?感觉看起来很奇怪,好像没有见过这个搞法,虽然可以。我自己认为异常就是定义异常的,不是自身去判断是否抛出自己;

个人的一些见解。
JAVAkuroro 2011-09-09
  • 打赏
  • 举报
回复
谢谢各位 问题已经解决
安心逍遥 2011-09-09
  • 打赏
  • 举报
回复
将两个catch的位置换一下,先catch Myexception再catch Exception
水无月青云 2011-09-09
  • 打赏
  • 举报
回复
如4楼所说,LZ你应该将你CATCH语句块换一下,你先扑捉了所有了异常,再来捕捉小的有意义吗?在自定义异常中构造的时候一般会初始化一些参数的!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧