catch (Exception ex)
{
Console.WriteLine("-- ex.Message --");
Console.WriteLine(ex.Message);
Console.WriteLine("-- ex.ToString() --");
Console.WriteLine(ex.ToString());
Console.WriteLine("-- ex.GetType().ToString() --");
Console.WriteLine(ex.GetType().ToString());
Console.WriteLine("-- ex.GetType().FullName --");
Console.WriteLine(ex.GetType().FullName);
}
Исключения
класса исключения?
Цитата: Bulkman
Скажите как реализовать перехват любой исключительной ситуации с выводом на экран имени
класса исключения?
класса исключения?
Код:
В результате выполнения приведённого кода на экране видим
Код:
-- ex.Message --
The path is not valid. Check the directory for the database. [ Path = H:\MyDocum
e\Visual Studio 2008\Projects\Data\Data\northwind\northwind.sdf ]
-- ex.ToString() --
The path is not valid. Check the directory for the database. [ Path = H:\MyDocum
e\Visual Studio 2008\Projects\Data\Data\northwind\northwind.sdf ]
-- ex.GetType().ToString() --
System.Data.SqlServerCe.SqlCeException
-- ex.GetType().FullName --
System.Data.SqlServerCe.SqlCeException
The path is not valid. Check the directory for the database. [ Path = H:\MyDocum
e\Visual Studio 2008\Projects\Data\Data\northwind\northwind.sdf ]
-- ex.ToString() --
The path is not valid. Check the directory for the database. [ Path = H:\MyDocum
e\Visual Studio 2008\Projects\Data\Data\northwind\northwind.sdf ]
-- ex.GetType().ToString() --
System.Data.SqlServerCe.SqlCeException
-- ex.GetType().FullName --
System.Data.SqlServerCe.SqlCeException
Была предпринята попытка установить соединение с базой данных, но имя файла указано неверно.
Библиотека hmean.h
#ifndef _my_exception_
#define _my_exception_
#include <iostream>
using namespace std;
#include <cstring>
class bad_hmean {
private:
double v1;
double v2;
public:
bad_hmean(int a = 0, int b = 0) : v1(a), v2(b) {};
void mesg();
};
inline void bad_hmean::mesg() {
cout << "bad_hmean(" << v1 << "," << v2 << "): "
<< "not vailid argument: a = - b not accept:";
}
class bad_gmean {
private:
double v1;
double v2;
public:
bad_gmean (double a = 0, double b = 0) : v1(a), v2(b) {};
const char *mesg();
};
inline const char *bad_gmean::mesg() {
//функция воврашающие строки в стиле С
return "Argument bad_gmean() must be >=0\n";
}
class demo {
private:
char word[40];
public:
demo (const char *str) {
strcpy(word, str);
cout << "demo " << word <<" created\n";
}
~demo() {
cout << "demo " << word << " deleted\n";
}
void show () const {
cout << "demo" << word << " a live\n";
}
};
#endif
фаль main.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "hmean.h"
#include <iostream>
#include <cmath>;
using namespace std;
#include <tchar.h>
//---------------------------------------------------------------------------
double hmean (double a, double b);
double gmean (double a, double b);
double means (double a, double b);
void details (double &a, double &b);
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
double x,y;
cout << "Enter two numbers: ";
try {
while (cin >> x >> y)
details(x,y);
} catch (bad_hmean &bg) { //создается объект класса bad_hmean
bg.mesg();
cout << "catched in main()\n";
}
catch (bad_gmean &hg) {
cout << hg.mesg();
}
cin.get();
cin.get();
return 0;
}
//---------------------------------------------------------------------------
double hmean (double a, double b) {
if (a == -b)
throw bad_hmean(a, b); //перебрасываются данные которые поступили в функцию
return 2.0*a*b/(a+b);
}
double gmean (double a, double b){
if (a < 0 || b < 0)
throw bad_gmean (a,b);
return a*b;
}
double means (double a, double b){
demo d2(" used in mean()");
double am, hm, gm;
am = (a+b) / 2.0;
try {
gm = hmean(a,b);
hm = gmean(a,b);
} catch (bad_hmean &bg) {
bg.mesg();
cout << "catched in mean()\n";
throw; //перебрасывает в main() catch (bad_hmean &bg) {
}
d2.show();
return (am + hm + gm) / 3.0;
}
void details (double &a, double &b) {
cout << "Harmonic mean of " << a << " and" << b
<< " is " << means(a,b) << endl;
cout << "Enter next set of numbers <q to quit>";
}
_______________
Mega зеленый лазер
программа main.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <iostream>
using namespace std;
#include <cstdlib> // для abort()
#include <tchar.h>
//---------------------------------------------------------------------------
double hmean (double a, double b);
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
double x, y, z;
cout << "Enter two numbers: ";
while (cin >> x >> y) {
try {
z = hmean (x,y);
} catch (const char *s) {
cout << s << endl;
cout << "Enter a new pair of numbers: ";
continue;
}
catch (int s) {
cout << s << endl;
cout << "Enter: ";
continue;
}
cout << "Harmonic mean of " << x
<< " and " << y
<< " is " << z << "\n";
cout << "Enter next setof number <q to quite>: ";
}
return 0;
}
//---------------------------------------------------------------------------
double hmean (double a, double b) {
if (a == -b)
throw 10;
// throw "bad hmean() argument: a = -b not allowed"
return 2.0*a*b/(a+b);
}