Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39

Сгенерировать простое исключение в свойстве

14.10.2011, 01:52. Показов 5166. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В классе Сlass1 есть переменная int _RegNumber, (и еще одна переменная для имени организации, конструктор...) и мне нужно в свойстве для этой переменной (_RegNumber) в методе сет бросить исключение, если присваиваемое значение меньше или равно 0; при создании объекта-исключения использовать один из определенных в библиотеке CLR классов-исключений, инициализировать объект-исключение с помощью конструктора с параметром типа string.

На счет конструктора я не понял... Объясните пожалуйста. А класс исключение взял try/catch
Я примерно задание понимаю так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int RegNumber
        {
            get { return _RegNumber; }
            set 
            {
                if (_RegNumber <= 0) { Exception e = new Exception("Номер не подходит!"); }
                try
                {
                    _RegNumber = value;
                }
 
                catch(Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
В мейне

C#
1
2
 Class1 object1 = new Class1 ("ИмяОрганизации",0);
            Console.WriteLine(object1.RegNumber);
Но мне не выводит мое исключение. А просто 0. Помогите пожалуйста разоьраться
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2011, 01:52
Ответы с готовыми решениями:

Как сгенерировать исключение в C#?
Вот мне надо создать файл, туда записывать адреса сайтов , и сгенерировать исключение, что если адрес сайта не содержит домены .net .com...

Как искусственно сгенерировать исключение?
Как можно программно вызвать исключение? Я вижу единственный вариант это специально создать такую ситуацию, например попытаться обратится к...

Как сгенерировать собственное исключение
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace CLAb { ///...

6
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
14.10.2011, 02:01
C#
1
2
3
4
5
6
7
8
9
10
11
12
public int RegNumber
        {
            get { return _RegNumber; }
            set 
            {
                if (value <= 0) { throw new Exception("Номер не подходит!"); }
else
{
_RegNumber=value;
}
            }
        }
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.10.2011, 02:06
Одно "но": используйте конктретное исключение ArgumentOutOfRangeException вместо обобщенного Exception.

C#
1
2
3
4
5
6
7
8
9
10
public int RegNumber
        {
            get { return _RegNumber; }
            set 
            {
                if (value <= 0)
                   throw new ArgumentOutOfRangeException();
                _RegNumber = value;
            }
        }
1
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
14.10.2011, 13:05  [ТС]
Спасибо большое!)
Только теперь не пойму как в мейне с созданным объектом типа Class1 применить мое исключение..
Тут я чето мудрил мудрил.. и не намудрил =( Подскажите как привильно
C#
1
2
3
Team object1 = new Team("lalalala", 0);
            try { Console.WriteLine(object1); }
            catch { }
Добавлено через 24 минуты
Ура! Я нашел что то похожее на msdn =)) Всем спасибо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
 
class Program
{
    static void Main(string[] args)
    {
        try
        {
            Guest guest1 = new Guest("Ben", "Miller", 17);
            Console.WriteLine(guest1.GuestInfo());
        }
        catch (ArgumentOutOfRangeException outOfRange)
        {
 
            Console.WriteLine("Error: {0}", outOfRange.Message);
        }
    }
}
 
class Guest
{
    private string FirstName;
    private string LastName;
    private int Age;
 
    public Guest(string fName, string lName, int age)
    {
        FirstName = fName;
        LastName = lName;
        if (age < 21)
            throw new ArgumentOutOfRangeException("age","All guests must be 21-years-old or older.");
        else
            Age = age;
    }
 
    public string GuestInfo()
    {
        string gInfo = FirstName + " " + LastName + ", " + Age.ToString();
        return(gInfo);
    }
}
0
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
14.10.2011, 13:42
Цитата Сообщение от kolorotur Посмотреть сообщение
Одно "но": используйте конктретное исключение ArgumentOutOfRangeException вместо обобщенного Exception.
да ну ладно, по большому счету, во втором аргументе (или еще де) может быть что угодно, если я правильно понял...пускай схватит любое исключение, а в коде catch уже в зависимости от того, какое исключение, и делает с ним, что угодно
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
14.10.2011, 15:47
Цитата Сообщение от myltdne Посмотреть сообщение
Но мне не выводит мое исключение. А просто 0. Помогите пожалуйста разоьраться
написав
C#
1
 Console.WriteLine(object1.RegNumber);
ты попадаешь в блок get свойства RegNumber а не в set, где происходит проверка ввода и генерируется исключение. Тогда организовывай проверку вывода и в get. Но, видимо, требуется все таки проверка правильности ввода.

Предлагаю ловить исключение как ты и делал, но не обрабатывать его в этом классе, а сообщить об исключении в основную программу, и там уже принимать решение.
Например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Class1 {
      int _RegNumber;
 
        public int RegNumber {
          get { return _RegNumber; }
          set {            
               try {
                if (value <= 0) throw new ArgumentOutOfRangeException();
                _RegNumber = value;
               }           
              catch (ArgumentOutOfRangeException) {
                  throw;                 
              }
           }
        }
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            Class1 object1 = new Class1 ();
            try
            {
                object1.RegNumber = 0; // задаем не верное значение
            }
 
            catch (ArgumentOutOfRangeException)
            {
                Console.WriteLine("Номер не подходит!");
                // далее исправляем ошибку ввода
            }
 
            Console.ReadKey();
        }
    }
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.10.2011, 17:23
Цитата Сообщение от dotFive Посмотреть сообщение
да ну ладно, по большому счету, во втором аргументе (или еще де) может быть что угодно, если я правильно понял...пускай схватит любое исключение, а в коде catch уже в зависимости от того, какое исключение, и делает с ним, что угодно
То, что вы предлагаете, в шутку называют Pokemon exception handling.
В серьезном коде такого допускать не рекомендуется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2011, 17:23
Помогаю со студенческими работами здесь

Как сгенерировать исключение в конструкторе?
Описываю свой класс . В качестве параметров конструктору передаются две точки x и y , обе int. далее такой код: if ((x &lt; 8...

Как сгенерировать исключение отличное от стандартного
Есть специальный метод который генерирует исключение если запись не найдена $article = Article::findOrFail(1); Так вот выводится...

Сгенерировать исключение для объекта класса
Помогите пожалуйста решить задачу Создать класс и 5 объектов этого класса. Сгенерировать исключение для 1-го из них, после чего вывести...

Сгенерировать исключение, если в текстбоксе есть цифры
Пишу программу и не могу разобраться... Суть программы я заполняю информацию о человеке ( его ФИО, номер и так далее). Как сделать, чтобы,...

Сгенерировать исключение в случае, если файл не удалось открыть
&quot;void SaveToFile (char*fn)Создает новый файл с названием fn и записывает в него массив в двоичном виде; генерирует исключение в случае,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru