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

Не могу перехватить исключение System.ArgumentException

18.03.2017, 18:01. Показов 4855. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот кусок кода:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 try
            {
                StreamReader sr = File.OpenText(path);
                for (int i = 0; i < kolstr; i++)
                {
                    nastr_stroka[i] = sr.ReadLine();
                }
            }
            // Обработка исключений: (пустые поля, отсутствие файла настройки)
            catch (ArgumentException)
            {
                MessageBox.Show("Заполнены не все поля в файле nastroika.txt. Перейдите в Меню - Настройка каталогов и почты - Задать. Заполните пустые поля.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Form1.ActiveForm.Close();
                Environment.Exit(0);
            }
 
            catch (System.IO.FileNotFoundException)
            {
                MessageBox.Show("Файл nastroika.txt не существует или перемещен из корневого каталога", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);                
                Form1.ActiveForm.Close();
                Environment.Exit(0);             
            }
В этом куске кода обрабатывается только второе исключение.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2017, 18:01
Ответы с готовыми решениями:

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Доброго времени суток. Возникла проблема с загрузкой изображения из базы данных. Вот собственно код: ...

Необработанное исключение типа "System.ArgumentException" в System.dll
доброго времени суток!!!! проблема такая не могу настроить отправку на почту майл!!!!!! у меня есть форма где добавляешь аккаунт я...

Необработанное исключение типа "System.ArgumentException" в mscorlib.dll
Помогите пожалуйста, сегодня начал работу с .xml файлами, программа выдает при работе следующее: Необработанное исключение типа...

7
67 / 65 / 61
Регистрация: 11.11.2015
Сообщений: 392
18.03.2017, 18:04
Ну файла нет, выбрасывается исключение. Дальше видимо просто и не идет.
0
1 / 1 / 1
Регистрация: 22.02.2017
Сообщений: 35
18.03.2017, 18:43  [ТС]
Ошибка возникает здесь
C# Скопировано
1
2
var tem1_2 = new DirectoryInfo(@nastr_stroka[0]).EnumerateFileSystemInfos("*.tek", SearchOption.AllDirectories)
                .Where(file => file.LastWriteTime >= dateTimePicker1.Value && file.LastWriteTime <= dateTimePicker2.Value);
Потому что в файле nastroika.txt откуда берутся данные в выше стоящий код пустая строка (или правильно отсутствуют аргументы). При этом выскакивает окошко с исключением System.ArgumentException, которое я и не могу обработать в программе.

Добавлено через 30 минут
Вот информация.
Как обработать возникшее исключение?

Кликните здесь для просмотра всего текста
System.ArgumentException не обработано
HResult=-2147024809
Message=Путь имеет недопустимую форму.
Source=mscorlib
StackTrace:
в System.IO.Path.LegacyNormalizePath(Strin g path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
в System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
в System.IO.Path.GetFullPathInternal(Strin g path)
в System.IO.DirectoryInfo.Init(String path, Boolean checkHost)
в System.IO.DirectoryInfo..ctor(String path)
в Kofficientu.Form1.button1_Click(Object sender, EventArgs e) в c:\Project C#\Kofficientu\Kofficientu\Form1.cs:стро ка 127
в System.Windows.Forms.Control.OnClick(Eve ntArgs e)
в System.Windows.Forms.Button.OnClick(Even tArgs e)
в System.Windows.Forms.Button.OnMouseUp(Mo useEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(M essage& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Mes sage& m)
в System.Windows.Forms.ButtonBase.WndProc( Message& m)
в System.Windows.Forms.Button.WndProc(Mess age& m)
в System.Windows.Forms.Control.ControlNati veWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNati veWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Debugg ableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods .DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.Compone ntManager.System.Windows.Forms.UnsafeNat iveMethods.IMsoComponentManager.FPushMes sageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadC ontext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadC ontext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(For m mainForm)
в Kofficientu.Program.Main() в c:\Project C#\Kofficientu\Kofficientu\Program.cs:ст рока 19
в System.AppDomain._nExecuteAssembly(Runti meAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.Ho stProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStar t_Context(Object state)
в System.Threading.ExecutionContext.RunInt ernal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(Ex ecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(Ex ecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStar t()
InnerException:
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
18.03.2017, 19:02
Лучше упростить
Цитата Сообщение от vkgorod Посмотреть сообщение
C# Скопировано
1
2
3
4
5
StreamReader sr = File.OpenText(path);
for (int i = 0; i < kolstr; i++)
{
    nastr_stroka[i] = sr.ReadLine();
}
до
C# Скопировано
1
nastr_stroka = File.ReadAllLines("path");
тем более где-то еще вы считаете строки в переменную kolstr
Раз у вас ошибка в
Цитата Сообщение от vkgorod Посмотреть сообщение
var tem1_2 = new......
то ее и заносите в try{}
0
1 / 1 / 1
Регистрация: 22.02.2017
Сообщений: 35
18.03.2017, 19:24  [ТС]
Цитата Сообщение от Driwars Посмотреть сообщение
Лучше упростить

до
C# Скопировано
1
nastr_stroka = File.ReadAllLines("path");
тем более где-то еще вы считаете строки в переменную kolstr
Раз у вас ошибка в
то ее и заносите в try{}
Спасибо за упрощение кода.
Ответ с try{} для меня не вариант. Нужно обработать в блоке catch{}
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
18.03.2017, 19:30
Лучший ответ Сообщение было отмечено vkgorod как решение

Решение

Проблема в том что в том коде что вы предоставили нет этой ошибки. Та часть что находится в try просто читает файл. После этого желательно запустить метод валидации полученных данных.
1
1 / 1 / 1
Регистрация: 22.02.2017
Сообщений: 35
18.03.2017, 19:46  [ТС]
Разобрался. Отлавливал исключение здесь:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
public  void nastroika() // Считывание данных с файла настройка (каталог путей, настройки почты)
        {                     
            try
            {
                StreamReader sr = File.OpenText(path);
                nastr_stroka = File.ReadAllLines(path);
            }
            // Обработка исключений: (пустые поля, отсутствие файла настройки)
            catch (ArgumentException)
            {
                MessageBox.Show("Заполнены не все поля в файле nastroika.txt. Перейдите в Меню - Настройка каталогов и почты - Задать. Заполните пустые поля.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Form1.ActiveForm.Close();
                Environment.Exit(0);
            }
 
            catch (System.IO.FileNotFoundException)
            {
                MessageBox.Show("Файл nastroika.txt не существует или перемещен из корневого каталога", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);                
                Form1.ActiveForm.Close();
                Environment.Exit(0);             
            }       
        }
А надо было здесь:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
 
.....
nastroika();
var tem1_2 = new DirectoryInfo(@nastr_stroka[0]).EnumerateFileSystemInfos("*.tek", SearchOption.AllDirectories)
               .Where(file => file.LastWriteTime >= dateTimePicker1.Value && file.LastWriteTime <= dateTimePicker2.Value);
                foreach (var f in tem1_2)
                {
                    File.Copy(Path.Combine(f.FullName), Path.Combine(@"C:" + textBox1.Text + "\\ТЭМ-05М1,2", f.Name), true);
                }
                label3.Text = tem1_2.Count() + "    " + @nastr_stroka[0];
.....
Исправленный код:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 try
            {
                var tem1_2 = new DirectoryInfo(@nastr_stroka[0]).EnumerateFileSystemInfos("*.tek", SearchOption.AllDirectories)
               .Where(file => file.LastWriteTime >= dateTimePicker1.Value && file.LastWriteTime <= dateTimePicker2.Value);
                foreach (var f in tem1_2)
                {
                    File.Copy(Path.Combine(f.FullName), Path.Combine(@"C:" + textBox1.Text + "\\ТЭМ-05М1,2", f.Name), true);
                }
                label3.Text = tem1_2.Count() + "    " + @nastr_stroka[0];
                label3.Visible = true;
            }
            // Обработка исключений: (пустые поля, отсутствие файла настройки)
            catch (ArgumentException)
            {
                MessageBox.Show("Заполнены не все поля в файле nastroika.txt. Перейдите в Меню - Настройка каталогов и почты - Задать. Заполните пустые поля.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Form1.ActiveForm.Close();
                Environment.Exit(0);
            }
Спасибо за помощь!
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
18.03.2017, 22:01
C# Скопировано
1
StreamReader sr = File.OpenText(path);
строка не нужна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2017, 22:01
Помогаю со студенческими работами здесь

Чтение бинарных файлов: Необработанное исключение типа "System.ArgumentException"
int buffer = 1024; byte Bytes = new byte; using (BinaryReader reader = new BinaryReader(File.Open(&quot;1.jpg&quot;, FileMode.Open))) { ...

Необработанное исключение типа "System.ArgumentException" при работе с нейросетью
Добрый день! Знаю, что такая ошибка не редкость и решения есть. Уверяю Вас я пробовал все, сто понял. Если никто не возражает, то я...

SOS : ERROR : Необработанное исключение типа "System.ArgumentException" в mscorlib.dll
static void Main(string args) { FileStream num = new...

System.ArgumentException в System.Drawing.dll при работе с Gif
Необработанное исключение типа &quot;System.ArgumentException&quot; произошло в System.Drawing.dll using System; using...

System.argumentexception: Источник уже существует на локальном компьютере
Пытаюсь создать небольшую службу под win но при инсталяции возникает исключение ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кастомные аллокаторы в C++ и оптимизация управления памятью
bytestream 14.04.2025
Работа с памятью в С++ всегда была и остаётся одной из самых увлекательных и сложных задач для программиста. Любой опытный C++ разработчик подтвердит: стандартные механизмы аллокации памяти – штука. . .
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер