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

Try, catch. Как вернуться к месту исключения?

24.10.2017, 13:37. Показов 5629. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят подскажите пожалуйста, как сделать, что бы при поимке исключения программа стартовала не с самого начала, а с того места, где возникло исключение? (Ну то есть повторять последний ввод и продолжать). Есть вообще такой способ? Или только через if-else или catch c goto на каждую операцию?

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int i;
            string[] V = new string[8];
            int v = 0;
            V[0] = "капитальных";
            V[1] = "командировочных";
            V[2] = "аутсорсинговых";
            V[3] = "на разработку";
            V[4] = "на сопровождение";
            V[5] = "на управление";
            V[6] = "на связь";
            V[7] = "все прочие затраты в сумме";
 
            Found1:
            Console.WriteLine("Введите сумму затрат ...");
            try
            {
                //V(m)
                
                for (i = 0; i < V.Length; i++)
                {
                    Console.Write(V[i] + " ");
                    v = v + Convert.ToInt32(Console.ReadLine());
                }
 
                ////WACC
 
                double ce, cd, e, d, we, wd, wacc, t;
                Console.Write("Объем собственного инвестированного капитала: ");
                e = Convert.ToDouble(Console.ReadLine());
                Console.Write("Объем заемного инвестированного капитала: ");
                d = Convert.ToDouble(Console.ReadLine());
                Console.Write("Ожидаемая доходность собственного капитала,%: ");
                ce = Convert.ToDouble(Console.ReadLine()) / 100;
                Console.Write("Стоимость заемного капитала,%: ");
                cd = Convert.ToDouble(Console.ReadLine()) / 100;
                Console.Write("Налоговая ставка,% :");
                t = Convert.ToDouble(Console.ReadLine()) / 100;
 
                we = e / (e + d);
                wd = d / (e + d);
                wacc = we * ce + wd * cd * (1 - t);
 
                //NCF
 
                Console.Write("Срок, лет: ");
                int n = Convert.ToInt32(Console.ReadLine());
                Console.Write("Ожидаемая прибыль в год: ");
                double ncf = Convert.ToDouble(Console.ReadLine());
                Console.Write("Ожидаемые ежегодные затраты: ");
                double cf = Convert.ToDouble(Console.ReadLine());
 
                //NPV
 
                double npv = 0;
                for (i = 1; i <= n; i++)
                {
                    double np = 0;
                    np = (ncf - cf) / Math.Pow(1 + wacc, i);
                    npv = npv + np;
                }
                npv = npv - v;
 
                //Окупаемость
 
                int count = 0, j = 1;
 
                double npv2 = 0;
                while (npv2 < v)
                {
                    double np2 = 0;
                    np2 = (ncf - cf) / Math.Pow(1 + wacc, j);
                    npv2 = npv2 + np2;
                    count++;
                    j++;
                }
 
                //TCO
 
                double tco = v + cf * (n);
 
 
                //ВЫВОД
                Console.Clear();
                Console.WriteLine("Объем прямых затрат: " + v);
                Console.WriteLine("WACC: " + wacc);
                Console.WriteLine("Совокупная стоимость:" + tco);
                Console.WriteLine("NPV: " + npv);
                Console.WriteLine("Минимальный срок окупаемости, лет: " + count);
 
            }
 
            catch (FormatException)
            {
                Console.Clear();
                Console.WriteLine("Ошибка ввода. Начните заново");
                goto Found1;
            }
 
            Console.ReadKey();
 
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.10.2017, 13:37
Ответы с готовыми решениями:

Как вернуться к вводу длины массива после обработки исключения IndexOutOfRangeException
Есть фрагмент кода try { //вернуться сюды Console.Write(&quot;Введите длину массива...

Как передать управление в блок catch после системного исключения (компилятор g++)?
Вот пример: не удаётся это сделать #include &lt;windows.h&gt; #include &lt;stdio.h&gt; //Эта функция- НОВЫЙ обработчик...

Исключения try-catch
Здравствуйте, пытаюсь с помощь try-catch сделать обработку исключений. #include &lt;iostream&gt; #include &lt;cmath&gt; #include...

5
Эксперт .NET
 Аватар для Usaga
14301 / 9386 / 1353
Регистрация: 21.01.2016
Сообщений: 35,391
24.10.2017, 13:40
Цитата Сообщение от andrevo Посмотреть сообщение
что бы при поимке исключения программа стартовала не с самого начала, а с того места, где возникло исключение?
Такое невозможно. Разделите свой код на несколько небольших методов, вокруг которых организуйте перехват исключений. А потом, если надо, то перевызывайте нужный метод, который раньше кинул исключение.
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 24
24.10.2017, 16:51  [ТС]
Спасибо за ответ.
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 234
24.10.2017, 22:43
decimal.TryParse и не надо ни каго try catch.
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 24
24.10.2017, 23:36  [ТС]
Спасибо, попробую
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,598
Записей в блоге: 1
25.10.2017, 18:39
stele, да нифиг они вообще нужны, эти отловы исключений, исключить их))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.10.2017, 18:39
Помогаю со студенческими работами здесь

Исключения Try {} catch() {}
Здравствуйте. Подскажите пожалуйста, как правильно отлавливать исключения. Вот у меня есть ошибка в раздел &quot;catch&quot;...

Try catch не перехватывает исключения
private string GETvk(string adr){ try{ HttpWebRequest rget=(HttpWebRequest) HttpWebRequest.Create(adr); ...

Try-catch не ловит исключения
try { ftpClient.directoryListSimple(&quot;test&quot;); } catch { ...

Зацикленный Catch ( исключения )
Всем доброго времени суток. Столкнулся с такой проблемой: В ниже приведенном коде, почему то, при установке флага failbit, когда управление...

Try - catch. Повторная обработка исключения?
Помогите разобраться, пожалуйста. Есть datagridview, в котором проверяется, введено ли действительное число. если нет - появляется...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru