В C # я реализовал пользовательское исключение, как теперь его реализовать? - PullRequest
0 голосов
/ 15 ноября 2018

Я делаю игру Tic-Tac-Toe для задания и я новичок в C #.У меня есть пользовательское исключение для плохих ходов, которое называется BadMoveException, что может произойти, если пользователь введет что-либо, кроме 0-8.Существует существующий код для назначения, и мне интересно, должен ли я покончить с кодом, чтобы создать свой собственный, чтобы использовать это исключение, или это достаточно легко реализовать здесь?Вот код:

string input;
int position;
do
{
    input = Console.ReadLine();
} 
while (!int.TryParse(input, out position));

Мне нужно поймать BadMoveException и любые другие с неизвестным сообщением об ошибке.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вот что у меня есть:

1- Во-первых, ваше исключение нужно наследовать от исключения следующим образом:

public class BadMoveException : Exception { // Your code here }

2- Если у вас есть ошибка, вы используете ее так:

throw new BadMoveException(// Enter parameter if you have any in you class);

И вы ловите это:

try
{
    if(Position < 0 || Position > 8) 
    { 
         throw new BadMoveException(// Enter parameter here if you have any);
    }
    else
    {
         // Your code here
    }
}
catch(BadMoveException bmex) { // Show message here }
catch(Exception ex) { // Show other exception }

Надеюсь, это поможет!

Ссылки на документацию: http://www.tutorialsteacher.com/csharp/custom-exception-csharp https://stackify.com/csharp-exception-handling-best-practices/

0 голосов
/ 15 ноября 2018

Пока ваш BadMoveException наследуется от Exception, вы можете использовать его, как и любой другой Exception, например:

try {
    //do stuff
    if (badMove) {
        throw new BadMoveException();
    }
} catch (BadMoveException) {
    //user made a bad move!!
} catch {
    //something else went wrong
}

Подробнее об обработке исключений можно узнать здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/exceptions/

...