扑克游戏中未处理的例外情况

时间:2013-12-13 05:19:34

标签: java exception-handling unhandled-exception poker playing-cards

我有一个多部分程序(2个java文件)应该做两件事:

  1. 制作一副纸牌(随机播放,处理,重置)

  2. 制作扑克游戏(制作两副牌,其他东西......)

  3. 由于这个未处理的异常错误,我有一个障碍,我甚至不知道它来自哪里。错误如下图所示,源代码如下。

    Unhandled Exception Error

    扑克牌异常类

    class PlayingCardException extends Exception {
    
        /* Constructor to create a PlayingCardException object */
        PlayingCardException (){
            super ();
        }
    
        PlayingCardException ( String reason ){
        super ( reason );
        }
    }
    

    甲板课     / **类甲板代表:n副扑克牌      *使用班级卡制作n * 52张扑克牌!      *      *不要添加新的数据字段!      *不要修改任何方法      *您可以添加私人方法      * /

    class Decks {
    
        /* this is used to keep track of original n*52 cards */
        private List<Card> originalDecks;   
    
    /* this starts with n*52 cards deck from original deck   */
    /* it is used to keep track of remaining cards to deal */
    /* see reset(): it resets dealDecks to a full deck      */
    private List<Card> dealDecks;
    
    /* number of decks in this object */
    private int numberDecks;
    
    
     /**
     * Constructor: Creates n decks (52 cards each deck) of playing cards in
     *              originalDecks and copy them to dealDecks.
     *              initialize numberDecks=n
     * Note: You need to catch PlayingCardException from Card constructor
     *       Use ArrayList for both originalDecks & dealDecks
     * @throws PlayingCardException 
     */
    public Decks(int n) throws PlayingCardException
    {
        // implement this method!
        this.originalDecks = new ArrayList<Card>();
        this.dealDecks = new ArrayList<Card>();
        int i, j, k;
        numberDecks = n;
        for (k=0;k<n;k++){
            for (i=1;i<14;i++) 
            {
                for(j=0;j<4;j++) 
                {
                    Card orcard = new Card(i,j);
                    originalDecks.add(orcard);
                    dealDecks.add(orcard);
                }
            }
            }
        }
    }
    

2 个答案:

答案 0 :(得分:4)

此检查异常正在Decks类的构造函数中声明。

public Decks(int n) throws PlayingCardException

让构造函数抛出异常并不是一个好主意。

您是否确定构造函数中的代码会抛出此异常?

尝试将此代码移动到可在主代码中调用的另一种方法。

答案 1 :(得分:0)

您的构造函数所做的声明是PlayingCardExceptionchecked exception。这意味着你必须抓住它。

由于您尝试将其用作静态字段,为什么还要将它作为一个检查异常呢?请改为扩展RuntimeException,如果它出现,您不必在任何时候想要使用它而绝对被强制检查。这样,您就可以按照自己的方式进行静态初始化。