尝试使用输入捕获不捕获异常

安德鲁689

我正在制作二十一点游戏,到目前为止,我已经完成了纸牌课程。卡类可以工作,但是当我去测试test3时的卡类时,应该捕获异常,因为“ X”不在值数组中,但由于某种原因,它无法捕获并显示X而不是错误消息“输入无效”。我想发生的是我的值集访问器应搜索String [] values数组,然后确定value参数是否有效,如果不是,则抛出新的异常。我不确定如何解决此问题。另外,我不能为值使用枚举,而需要使用values数组。

任何帮助,将不胜感激

这是我的卡片课程所需要的

class Card
{

    public enum SUIT { HEARTS, SPADES, DIAMONDS, CLUBS };

    private SUIT _suit;
    private String _value;

    public Card(SUIT suit, String value)
    {

        _suit = suit;
        _value = value;
    }

    public SUIT Suit
    {
        get
        {
            //Return member variable value
            return _suit;
        }
        set
        {
            _suit = value;
        }
    }

    private String[] values = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
    public String Value
    {
        get { return _value; }
        set
        {
            if (!values.Contains(value))
            {
                throw new ArgumentException("Invalid Input");
            }
            _value = value;
        }
    }
}

这是我正在测试的代码

try
        {
            Card testCard1 = new Card(Card.SUIT.SPADES, "Q");
            Console.WriteLine(testCard1.Suit + " " + testCard1.Value);
            Card testCard2 = new Card(Card.SUIT.DIAMONDS, "10");
            Console.WriteLine(testCard2.Suit + " " + testCard2.Value);
            Card testCard3 = new Card(Card.SUIT.DIAMONDS, "X");
            Console.WriteLine(testCard3.Suit + " " + testCard3.Value);

        }
        catch (ArgumentException e)
        {
            Console.WriteLine(e.Message);
        }
        Console.ReadLine();
沙皮犬

您正在通过构造函数将错误的值分配给backingfield。这并不是一件坏事,但是它绕过了您的propertylogic。

public Card(SUIT suit, String value)
{

    _suit = suit;
    _value = value; // this assignes the value directly to the field, bypassing your property-logic.
}

像这样更改它,将是最简单的解决方案

public Card(SUIT suit, String value)
{

    _suit = suit;
    Value = value; // use the property here.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试/捕获不捕获异常

来自分类Dev

尝试/捕获不捕获HTTPError

来自分类Dev

尝试catch不捕获错误的数字输入(还获取java.lang.arithmatic异常/零)

来自分类Dev

为什么不捕获异常的代码允许捕获检查的异常?

来自分类Dev

尝试/捕获未捕获异常

来自分类Dev

set_exception_handler()不捕获异常

来自分类Dev

设置/ P不捕获IF语句中的输入

来自分类Dev

reactjs尝试在渲染中捕获不捕获子级错误

来自分类Dev

尝试/捕获Image.FromStream()而不捕获其余using语句?

来自分类Dev

尝试在Discord.js中捕获不捕获

来自分类Dev

尝试捕获JSONArray Nullpointer不捕获任何内容

来自分类Dev

尝试捕获异常处理

来自分类Dev

尝试捕获无法捕获Java(Android)异常

来自分类Dev

尝试捕获无法捕获Java(Android)异常

来自分类Dev

我怎样才能使pytest不捕获异常

来自分类Dev

空引用异常-重定向时不捕获标签值

来自分类Dev

Selenium PHP Webdriver-不捕获异常吗?

来自分类Dev

永不捕获的例外

来自分类Dev

尝试,捕获和异常处理

来自分类Dev

开关块尝试/捕获异常

来自分类Dev

尝试-捕获Java异常-Eclipse

来自分类Dev

为什么Scala尝试不捕获java.lang.StackOverflowError?

来自分类Dev

Windows setFocus,目标窗口不捕获键盘输入

来自分类Dev

尝试捕获和用户输入

来自分类Dev

尝试捕获和负输入

来自分类Dev

尝试使用Java捕获-发生异常时会发生什么?

来自分类Dev

使用用户输入在Java中进行尝试/捕获循环

来自分类Dev

为什么不捕获Exception捕获RuntimeException?

来自分类常见问题

使用其类型而不是其实例调用不捕获