C++ Tutorial/Exceptions/function and Exception — различия между версиями
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
|
(нет различий)
|
Версия 14:21, 25 мая 2010
Содержание
Localize a try/catch to a function
#include <iostream>
using namespace std;
void f(int test)
{
try{
if(test) throw test;
}
catch(int i) {
cout << "Caught Exception #: " << i << "\n";
}
}
int main()
{
cout << "Start\n";
f(1);
f(2);
f(0);
f(3);
cout << "End";
return 0;
}
Start Caught Exception #: 1 Caught Exception #: 2 Caught Exception #: 3 End"
Restricting function throw types
#include <iostream>
using namespace std;
// only throw ints, chars, and doubles
void f(int val) throw(int, char, double)
{
if(val==0)
throw val;
if(val==1)
throw "a";
if(val==2)
throw 123.23;
}
int main()
{
try{
f(0); // also, try passing 1 and 2 to f()
}
catch(int i) {
cout << "Caught an integer\n";
}
catch(char c) {
cout << "Caught char\n";
}
catch(double d) {
cout << "Caught double\n";
}
return 0;
}
Caught an integer
This function can throw NO exceptions!
#include <iostream>
using namespace std;
void f(int val) throw();
int main()
{
try{
f(0); // also, try passing 1 and 2 to f()
}
catch(int i) {
cout << "Caught an integer\n";
}
catch(char c) {
cout << "Caught char\n";
}
catch(double d) {
cout << "Caught double\n";
}
return 0;
}
// This function can throw NO exceptions!
void f(int val) throw()
{
cout << "f";
}
f"
Throwing an exception from a function outside the try block
#include <iostream>
using namespace std;
void f(int test)
{
cout << "Inside f, test is: " << test << "\n";
if(test) throw test;
}
int main()
{
cout << "Start\n";
try { // start a try block
cout << "Inside try block\n";
f(0);
f(1);
f(2);
}
catch (int i) { // catch an error
cout << "Caught an exception -- value is: ";
cout << i << "\n";
}
cout << "End";
return 0;
}
Start Inside try block Inside f, test is: 0 Inside f, test is: 1 Caught an exception -- value is: 1 End"