Witam
Uczę się wykorzystywać wyjątki w niewielkich programach. Błąd polega na odniesieniu się do "catch", mimo tego że nie wystąpił odpowiedni wyjątek.
Oto kod:
#include <fstream>
#include <iostream>
#include <Windows.h>
#include <string>
void openFile (std::string);
void cryptionFile(std::ofstream);
int main()
{
std::string fileName;
std::cout << "Wprowadz nazwe pliku: ";
std::getline(std::cin, fileName);
openFile(fileName);
try
{
openFile(".dll");
}
catch (const char * s)
{
int sign ;
std::cout << s << std::endl;
std::cout << "1. Zakoncz.\n2. Wprowadz dane\n";
std::cin >> sign;
switch (sign)
{
case 1:
break;
case 2:
{
std::cout << "Nazwa nowego pliku: ";
std::getline(std::cin, fileName);
openFile(fileName);
}
}
}
system("pause");
return 0;
}
void openFile(std::string file)
{
std::string text;
std::ifstream inFile;
inFile.open(file.c_str());
if (inFile.good())
{
std::cout << "Plik otwarty.\n";
std::getline(inFile, text);
std::cout << text << std::endl;
inFile.close();
}
else if(file.empty()) // działa bez wyjątku
throw "Wypelnij pole!\n";
else
{
std::cout << "Plik nieistnieje!\n";
system("pause");
exit(0);
}
}
1. Jeżeli wprowadzę "haslo.txt":
- pojawia się informacja o otwarciu pliku oraz zawartość, co jest wskazane
- jednak dodatkowo wykonuje się "else" funkcji (informacja o nieistniejącym pliku)
2. Jeżeli wprowadzę "<enter>" pojawia się błąd wyjątku (?)