Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
1

Как искусственно вызвать exception в Class Library (пока пустой)

15.10.2018, 11:06. Просмотров 176. Ответов 13
Метки нет (Все метки)

Привет!
Нужно протестировать обработку Exception в project Class Library. Проект пока пустой. Как в нем исcкуственно вызвать Exception?

Bulky
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2018, 11:06
Ответы с готовыми решениями:

Как узнать путь к ресурсу сборки Class Library?
Здравствуйте, я разрабатываю addin для Excel. В проект addin`а я добавил ресурс: шаблон Excel. Хочу...

Работа с DirectX: Output Type of Class Library
Доброго времени суток. Я новичок в DirectX и C#. Скачал SharpDX с примерами. Эти примеры не...

Intellisense и autocompletion в библиотеках класса (Class Library)
Глупый вопрос. Поэтому задаю здесь, хотя не совсем уж и начинающий. Создал проект из шаблона Class...

Вопрос из теста: A project with an Output Type of Class Library cannot be started directly
Вы проверяете код, написанный вашим коллегой. При компиляции Windows-приложения появляется...

Можно ли в class library "запихать" интерфейс?
вопрос в шапке. ну в плане "не рекомендуется" и т.п

13
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,075
Завершенные тесты: 1
15.10.2018, 11:08 2
Цитата Сообщение от Bulky Посмотреть сообщение
Как в нем исcкуственно вызвать Exception?
C#
1
throw new Exception();
1
V_Monomax
815 / 748 / 18
Регистрация: 09.08.2011
Сообщений: 1,699
Записей в блоге: 1
Завершенные тесты: 1
15.10.2018, 11:10 3
C#
1
throw new Exception("Класс пустой!");
1
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
15.10.2018, 11:17  [ТС] 4
Спасибо.
так это должно быть в try/catch операторе?

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
 
            try
            {
 
              
                throw new Exception("ex");
 
              
 
            }
 
            catch (Exception ex)
            {
 
 
                var messageBoxResult = WpfMessageBox.Show("Внимание!", ex.Message, MessageBoxButton.OK, MessageBoxImage.Error);
 
                if (messageBoxResult != MessageBoxResult.Yes)
 
                return;
 
 
 
            }
не фунциклирует почему-то.
0
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,075
Завершенные тесты: 1
15.10.2018, 11:29 5
Цитата Сообщение от Bulky Посмотреть сообщение
не фунциклирует почему-то.
Код с выбросом исключения надо вызвать.
Как и где он вызывается?
0
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
15.10.2018, 11:36  [ТС] 6
Цитата Сообщение от kolorotur Посмотреть сообщение
Код с выбросом исключения надо вызвать.
Как и где он вызывается?
Так в том то и дело, знал бы я как в пустом классе "состряпать" событие, я б не писал здесь. Кнопка и банальное деление на "ноль" в событии кнопки были бы мне в помощь.

Весь класс:


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
public class ClassA
    {
 
 
        public ClassA()
 
        {
 
 
            try
            {
              
                throw new Exception("ex");
 
              
            }
 
            catch (Exception ex)
            {
 
 
                var messageBoxResult = WpfMessageBox.Show("Внимание!", ex.Message, MessageBoxButton.OK, MessageBoxImage.Error);
 
                if (messageBoxResult != MessageBoxResult.Yes)
 
                return;
 
 
 
            }
 
        }       
 
    }
@Moderator, что-то не работает подсветка C#, хотя жму нужную кнопку.
0
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,075
Завершенные тесты: 1
15.10.2018, 11:43 7
Цитата Сообщение от Bulky Посмотреть сообщение
знал бы я как в пустом классе "состряпать" событие, я б не писал здесь.
Так вы тоже учитывайте, что здесь телепатов нет и если вы показываете не полные кусочки кода, то будут возникать подобные вопросы. Плюс никто же не знает уровень ваших знаний.

Цитата Сообщение от Bulky Посмотреть сообщение
Весь класс
Исключение вылетит при создании экземпляра этого класса.
Если этот класс находится в отдельной сборке, то вам надо создать проект-приложение, подключить к нему эту библиотеку и создать экземпляр класса по клику той же кнопки.
Опять же, не зная уровня ваших знаний, сложно показать что-то конкретное.
В каком из пунктов в вышеперечисленном списке необходимых действий у вас возникают затруднения?

Цитата Сообщение от Bulky Посмотреть сообщение
не работает подсветка C#, хотя жму нужную кнопку.
Вы жмете кнопку "Code", а надо жать "C#"
1
V_Monomax
815 / 748 / 18
Регистрация: 09.08.2011
Сообщений: 1,699
Записей в блоге: 1
Завершенные тесты: 1
15.10.2018, 11:52 8
Цитата Сообщение от Bulky Посмотреть сообщение
@Moderator, что-то не работает подсветка C#, хотя жму нужную кнопку.
не на ту кнопку вы жмете.
Не то делает вообще.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
try
            {
              
                throw new Exception("ex");
 
              
            }//блок кода проверяющий ошибку, в соответствии с написанным, если ничего нет до throw new Exception("ex");, то вы всегда получаете ошибку, это не правильно в принципе.
 
            catch (Exception ex)//поймали сгенерированную ошибку
            {
 
 
                var messageBoxResult = WpfMessageBox.Show("Внимание!", ex.Message, MessageBoxButton.OK, MessageBoxImage.Error);
 
                if (messageBoxResult != MessageBoxResult.Yes)
 
                return;
 
 
 
            }
Зачем столько сложностей, когда можно по некоторому событию не устраивающему вас, просто выдать сообщение, или прекратить работу программы, зачем генерировать исключение в не исключительных случаях, это фактически костыль в граблях, однажды костыль будет вынят, а граблями получите в лоб. Зачем вам такое?
1
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
15.10.2018, 12:28  [ТС] 9
Цитата Сообщение от V_Monomax Посмотреть сообщение
не на ту кнопку вы жмете.
Не то делает вообще.

Зачем столько сложностей, когда можно по некоторому событию не устраивающему вас, просто выдать сообщение, или прекратить работу программы, зачем генерировать исключение в не исключительных случаях, это фактически костыль в граблях, однажды костыль будет вынят, а граблями получите в лоб. Зачем вам такое?
Да это просто тестирование. Понятно, что "грабли" не нужны.

Добавлено через 7 минут
Цитата Сообщение от kolorotur Посмотреть сообщение
Так вы тоже учитывайте, что здесь телепатов нет и если вы показываете не полные кусочки кода, то будут возникать подобные вопросы. Плюс никто же не знает уровень ваших знаний.


Исключение вылетит при создании экземпляра этого класса.
Если этот класс находится в отдельной сборке, то вам надо создать проект-приложение, подключить к нему эту библиотеку и создать экземпляр класса по клику той же кнопки.
Опять же, не зная уровня ваших знаний, сложно показать что-то конкретное.
В каком из пунктов в вышеперечисленном списке необходимых действий у вас возникают затруднения?


Вы жмете кнопку "Code", а надо жать "C#"
Уровень знаний... Он написан в названии раздела этого форума.

"Въехал", давненько не пользовался, жал кнопку "#", а она никакого отношение к "С#" не имеет. На последних форумах где бывал, там вроде автоопределение было.

Что есть отдельная сборка? Доселе не встречал такого выражения.

Мне нужно вызвать любое искусственное исключение в классе (он пока пуст, но нужно чего-нибудь туда вставить), которое поймает оператор try/catch находящийся в этом же классе.
0
Wolfdp
858 / 771 / 198
Регистрация: 15.06.2012
Сообщений: 3,010
Записей в блоге: 1
Завершенные тесты: 1
15.10.2018, 12:36 10
Цитата Сообщение от Bulky Посмотреть сообщение
Что есть означает "в отдельной сборке?".
Означает, что нужно читать матчасть. Срочно.

в теории выглядит так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Nya
{
  public Nya() => throw new NotImplementedException();
}
 
private void ButtonClick(object sender, EventArgs e)
{
  try
  {
    var nya = new Nya();
  }
  catch(Exception ex)
  {
     //...
  }
}
На практике таким страдают только для отдельных методов класса.
1
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,075
Завершенные тесты: 1
15.10.2018, 12:40 11
Цитата Сообщение от Bulky Посмотреть сообщение
Уровень знаний... Он написан в названии раздела этого форума.
Названия разделов — та еще головная боль. В этом разделе разброс тем от такой до примерно такой.
Угадать невозможно

Цитата Сообщение от Bulky Посмотреть сообщение
Что есть отдельная сборка?
Ну вот вы в первом сообщении написали, что у вас проект типа Class Library. При компиляции этого проекта на выходе будет файл .dll — это и есть отдельная сборка.

Цитата Сообщение от Bulky Посмотреть сообщение
Мне нужно вызвать любое искусственное исключение в классе (он пока пуст), которое поймает оператор try/catch.
Создайте проект WPF-приложение в том же решении, где у вас проект Class Library.
В свежесозданном проекте правокликните по папке References, выберите Add Reference, в открытом окошке перейдите на закладку Project и там отметьте вашу Class Library — это "подцепит" сгенерированную dll в оконное приложение.
В оконном приложении бросьте на форму кнопку, подключите к ней обработчик событий (судя по этому сообщению, вы уже знаете как это делается) и в обработчике пропишите такое:
C#
1
var c = new ClassA();
Если компилятор ругнется на то, что не знает никакого ClassA, либо подключите определенное вами пространство имен, в котором этот класс создан через директиву using, либо пропишите его явно:
C#
1
var c = new ClassLibrary1.ClassA();
При клике на кнопку должно выскочить сообщение, которое вы запускаете в блоке catch конструктора вашего класса.
1
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
15.10.2018, 13:12  [ТС] 12
Цитата Сообщение от kolorotur Посмотреть сообщение
Названия разделов — та еще головная боль. В этом разделе разброс тем от такой до примерно такой.
Угадать невозможно


Ну вот вы в первом сообщении написали, что у вас проект типа Class Library. При компиляции этого проекта на выходе будет файл .dll — это и есть отдельная сборка.


Создайте проект WPF-приложение в том же решении, где у вас проект Class Library.
В свежесозданном проекте правокликните по папке References, выберите Add Reference, в открытом окошке перейдите на закладку Project и там отметьте вашу Class Library — это "подцепит" сгенерированную dll в оконное приложение.
В оконном приложении бросьте на форму кнопку, подключите к ней обработчик событий (судя по этому сообщению, вы уже знаете как это делается) и в обработчике пропишите такое:
C#
1
var c = new ClassA();
Если компилятор ругнется на то, что не знает никакого ClassA, либо подключите определенное вами пространство имен, в котором этот класс создан через директиву using, либо пропишите его явно:
C#
1
var c = new ClassLibrary1.ClassA();
При клике на кнопку должно выскочить сообщение, которое вы запускаете в блоке catch конструктора вашего класса.
По "отдельной сборке" понятно. Это "it s a second project (e.g. Class Library) within the same solution".

@Kolorotur, конгениально, все вы правильно уловили и написали мне. Мне даже не пришлось делать все. Только половину. Т.к. проект был создан и Reference Project (Class Library) -->(Win Apps) существовала. И если я добавлю обратную Reference, то попаду в такую "гадость" как circular dependency. C которой безуспешно "бодался" последние два дня. Проще обойти.
0
V_Monomax
815 / 748 / 18
Регистрация: 09.08.2011
Сообщений: 1,699
Записей в блоге: 1
Завершенные тесты: 1
15.10.2018, 13:15 13
Цитата Сообщение от Bulky Посмотреть сообщение
Что есть "в отдельной сборке?".
то чего вам будет сложно понять.
Цитата Сообщение от Bulky Посмотреть сообщение
Да это просто тестирование.
А минимально воспроизводимый код где?
0
Bulky
-185 / 3 / 0
Регистрация: 17.03.2018
Сообщений: 263
15.10.2018, 15:23  [ТС] 14
Цитата Сообщение от V_Monomax Посмотреть сообщение
то чего вам будет сложно понять.
это я понимать. Только, когда по "колхозному" выражаются, я немного "задумываться", что есть это.
А если кто-то, сделает одолжение и переведет на профессиональный язык, как это сделал(а) Kolorotur. Я понимать.
0
15.10.2018, 15:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2018, 15:23

Как искусственно вызвать событие, назначенное кнопке?
Есть лента изображений, помещенных в div. Одновременно видны только 3 изображения. По бокам есть...

Можно ли как-то искусственно вызвать существующее событие, или как-то на него подписаться?
Можно ли из кода как-то напрямую вызвать определенное событие? Т.е. нужно, чтобы сработал...

Как избавится от "First chance exception Exception class EOutOfResources with message 'Out of system resources'."?
Как избавится от "First chance exception at $765CC54F. Exception class EOutOfResources with message...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru