Шаг 229.
Язык программирования C#. Начала.
Обработка исключений. Использование исключений. Пример 2

    На этом шаге мы рассмотрим еще один пример использования исключений.

    В следующем примере есть метод, у которого два аргумента: текст и символ. Результатом метод возвращает индекс первого вхождения символа в текст. Если заданного символа в тексте нет, то метод генерирует исключение. Рассмотрим программный код.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr229_1
{
    // Класс с главным методом: 
    class Program
    {
        // Метод для поиска символа в тексте: 
        static int find(string txt, char s) {
            // Перебор символов в тексте: 
            for(int k = 0; k < txt.Length; k++) {
                // Если есть совпадение: 
                if(txt[k] == s) return k;
            }
            // Генерируется исключение:
            throw new Exception("Символа \'" + s + "\' в тексте \"" + txt + "\" нет");
        }

        // Главный метод:
        static void Main()
        {
            // Текстовая переменная: 
            string txt;
            // Символьная переменная: 
            char s;
            // Целочисленная переменная: 
            int index;
            // Контролируемый код: 
            try {
                Console.Write("Введите текст: ");
                // Считывание текста: 
                txt = Console.ReadLine();
                Console.Write("Bведите символ: ");
                // Считывание символа: 
                s = (char)Console.Read();
                // Определение индекса символа в тексте:
                index = find(txt, s);
                // Отображение результата:
                Console.WriteLine("Индекс символа: " + index);
            }
            // Обработка исключений: 
            catch(Exception e){
                // Описание исключения:
                Console.WriteLine(e.Message);
            }
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Возможный результат выполнения программы представлен ниже (здесь и далее выделены введенные пользователем значения):


Рис.1. Результат выполнения программы

    Если символа в тексте нет, то результат будет следующим:


Рис.2. Результат выполнения программы

    Схему мы использовали простую, напоминающую подход, реализованный в примере предыдущего шага. В статическом методе find() перебираются символы в тексте (первый аргумент), и если символ из текста совпадает с тем символом, который передан вторым аргументом методу, то индекс символа возвращается результатом метода. Если конструкция цикла завершился, а результат не возвращен, то генерируется исключение класса Exception. Описание исключения содержит информацию о том, что данного символа в тексте нет.

    В главном методе считывается текст и символ. Затем вызывается метод find(). Команды размещены в try-блоке, а исключения обрабатываются в catch-блоке.


Для считывания символа использован статический метод Read() из класса Console. Метод возвращает код считанного символа. Поэтому мы воспользовались явным приведением типа для преобразования кода в символ.

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг