Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Соколиный глаз
C#
256 / 198 / 120
Регистрация: 25.07.2014
Сообщений: 4,055
Записей в блоге: 2
Завершенные тесты: 3
1

Почему не выводит текст исключения?

27.09.2018, 16:37. Просмотров 1585. Ответов 8
Метки нет (Все метки)

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
using System;
 
namespace Example
{
    class Program
    {
        public static int BadFactorial(int k)
        {
            return BadFactorial(k - 1);
        }
        
        public static void Main(string[] args)
        {
            try
            {
                Console.WriteLine(BadFactorial(5));
            }
            catch
            {
                Console.WriteLine("Исключение");
            }
        }
    }
}
Почему не выводит текст Исключение?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2018, 16:37
Ответы с готовыми решениями:

Почему нельзя обрабатывать исключения в потоках
Сижу читаю msdn: http://msdn.microsoft.com/ru-ru/library/6kac2kdh.aspx Пять раз перечитал эти...

Определить уникальный код или текст исключения
При обработке исключения e свойство e.HResult выдает одно и то же число для разных похожих...

Почему нельзя генерировать исключения некоторых типов из своего кода
MSDN говорит следующее: Я не могу понять почему. Кто нибудь знает ответ на этот вопрос?

Почему Canvas не выводит текст?
В коде, приведённом ниже вроде всё правильно, но не пойму, почему не выводится текст!...

выводит число как текст почему-то
Связываю текстовые файлы с аксес, в предъимпорте поля указываю формат "двойное с плавающей точкой"....

8
V_Monomax
1404 / 1259 / 20
Регистрация: 09.08.2011
Сообщений: 2,312
Записей в блоге: 1
Завершенные тесты: 1
27.09.2018, 16:44 2
а почему он должен выводить?

Добавлено через 2 минуты
у вас тут еще и практически бесконечная рекурсия, просто число бесконечно уменьшается, а с чего ему выводить исключение?

Добавлено через 1 минуту
попробуйте Сделать так:
C#
1
2
3
4
5
public static int BadFactorial(int k)
        {
            Console.WriteLine(k - 1);
            return BadFactorial(k - 1);
        }
Для остановки нажать контрол + С.
0
Соколиный глаз
C#
256 / 198 / 120
Регистрация: 25.07.2014
Сообщений: 4,055
Записей в блоге: 2
Завершенные тесты: 3
27.09.2018, 16:49  [ТС] 3
V_Monomax, переполнение стека и все дела, разве нет?

Добавлено через 5 минут
Почему в данном случае не происходит ошибки? Я не понимаю.
0
Storm23
Эксперт .NETАвтор FAQ
9273 / 4498 / 1631
Регистрация: 11.01.2015
Сообщений: 5,724
Записей в блоге: 34
27.09.2018, 16:55 4
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Соколиный глаз,
StackOverflowException не может быть перехвачен в try/catch.
Читайте внимательно ремарки к описанию класса: https://docs.microsoft.com/en-us/dot...ramework-4.7.2
1
27.09.2018, 16:55
Соколиный глаз
C#
256 / 198 / 120
Регистрация: 25.07.2014
Сообщений: 4,055
Записей в блоге: 2
Завершенные тесты: 3
27.09.2018, 16:57  [ТС] 5
Storm23, а какие исключения также не могут быть перехвачены?
0
OwenGlendower
Супер-модератор
Эксперт .NET
11221 / 9452 / 4004
Регистрация: 17.03.2014
Сообщений: 18,915
Записей в блоге: 1
Завершенные тесты: 2
27.09.2018, 16:57 6
Соколиный глаз, исключение StackOverflowException не перехватывается catch-ем. Программа просто падает в этом случае.
1
V_Monomax
1404 / 1259 / 20
Регистрация: 09.08.2011
Сообщений: 2,312
Записей в блоге: 1
Завершенные тесты: 1
27.09.2018, 16:58 7
Соколиный глаз, из-за рекурсии, посмотрите что вам выведет консоль при моем исполнении.
1
Storm23
Эксперт .NETАвтор FAQ
9273 / 4498 / 1631
Регистрация: 11.01.2015
Сообщений: 5,724
Записей в блоге: 34
27.09.2018, 17:48 8
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
а какие исключения также не могут быть перехвачены?
Помимо StackOverflow, начиная с .NET 4.0, по умолчанию не отлавливается исключение AccessViolationException и аналогичные, связанные с попыткой доступа к памяти, не принадлежащей процессу (которые, впрочем, все равно можно отловить с помощью специальных атрибутов и настроек).

Кроме того, нужно отметить разницу между двумя похожими конструкциями: catch {....} и catch(Exception) {...}. Второй вариант ловит только CLS-совместимые исключения. То есть unmanaged исключения, которые генерируются внешним нативным кодом не ловятся конструкцией catch(Exception).
Вариант же catch{...} ловит все типы ошибок, включая ошибки неуправляемого кода. Подробнее см здесь.

PS Хотя на практике, нужно сказать, что очень многие ошибки в неуправляемом коде вообще не ловятся через try/catch.
Например, вот прямо сейчас пишу программу в которой выпадает AccessViolation из OpenGL. B try/catch упорно не хочет отлавливать ее, несмотря на рекомендации, приведенные выше, и приложение полностью крашится.
3
kolorotur
Эксперт .NET
12148 / 9663 / 2477
Регистрация: 17.09.2011
Сообщений: 16,451
Завершенные тесты: 1
27.09.2018, 17:51 9
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
а какие исключения также не могут быть перехвачены?
ExecutionEngineException, AccessViolationException и любые другие, которые рантайм посчитает черезчур серьезными для дальнейшего продолжения работы вашего процесса.
1
27.09.2018, 17:51
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2018, 17:51

Почему не выводит текст из файла (CP1251)?
#include <iostream> #include <fstream> #include <string> #include <locale> using namespace std;...

Почему не выводит текст во вторую activity?
Суть:Из первой activity во вторую передается текст,но,когда жму "Send Message",то выдает просто...

Почему innerHTML выводит только текст?
файл html <div id="elem"></div> файл js var text = '<b>текст</b>'; elem.innerHTML =...


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

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

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