- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
try
{
sw = gcnew StreamWriter(GetIniFileName());
}
catch(UnauthorizedAccessException^ e)
{
MessageBox::Show( "Access is denied.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(ArgumentNullException^ e)
{
MessageBox::Show( e->ParamName + ": File path is null.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(ArgumentException^ e)
{
MessageBox::Show( e->ParamName + ": Wrong file path.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(DirectoryNotFoundException^ e)
{
MessageBox::Show( "The specified path is invalid, such as being on an unmapped drive.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(PathTooLongException^ e)
{
MessageBox::Show( "The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters. ", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(IOException^ e)
{
MessageBox::Show( "File path includes an incorrect or invalid syntax for file name, directory name, or volume label syntax. ", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(SecurityException^ e)
{
MessageBox::Show( "The caller does not have the required permission." + e->ToString(), "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error );
ShowException(dynamic_cast<System::Exception^>(e));
return;
}
catch(System::Exception^ e)
{
ShowException(e);
return;
}
guest 22.06.2011 17:50 # +6
guest 22.06.2011 17:55 # 0
absolut 22.06.2011 23:07 # 0
Vindicar 22.06.2011 23:52 # 0
guest 23.06.2011 00:20 # 0
GetIniFileName() вполне может содержать неуправляемый код, который кинет неуправляемое исключение.
А catch(System::Exception^ e) ловит только управляемые исключения.
absolut 23.06.2011 10:32 # 0
Плюс к этому можно ведь создать не наследуемое от System::Exception исключение. Хотя
это и не гуд практик.
guest 23.06.2011 12:51 # 0
Управляемое в С++\CLI нельзя.
absolut 23.06.2011 14:00 # 0
Может всё таки речь о /clr:safe?
guest 23.06.2011 14:41 # 0
Вот в неуправляемом коде можно сгенерить исключение любого типа, хоть int или byte*, но catch(System::Exception^ e) их не ловит, зато ловит catch(...) или catch с соответствующим типом.
absolut 23.06.2011 14:56 # 0
VS 2010. Собирается с /clr. Как думаете в какой catch попадем? :)
guest 23.06.2011 15:20 # 0
Ясно, спасибо за информацию.
absolut 23.06.2011 16:13 # 0
guest 23.06.2011 23:12 # +1
guest 23.06.2011 14:45 # 0
ScumCoder 23.06.2011 21:00 # 0
guest 23.06.2011 23:11 # 0
SmackMyBitchUp 24.06.2011 22:02 # −1
guest 25.06.2011 01:44 # +3
guest8 08.04.2019 20:59 # −999
guest8 09.04.2019 18:07 # −999
guest8 09.04.2019 18:08 # −999