Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Исключения

54K
10 декабря 2009 года
Bulkman
2 / / 10.12.2009
Скажите как реализовать перехват любой исключительной ситуации с выводом на экран имени
класса исключения?
41K
13 декабря 2009 года
Alex57
44 / / 22.02.2009
Цитата: Bulkman
Скажите как реализовать перехват любой исключительной ситуации с выводом на экран имени
класса исключения?



Код:
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);
            }


В результате выполнения приведённого кода на экране видим

 
Код:
--  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


Была предпринята попытка установить соединение с базой данных, но имя файла указано неверно.
54K
13 декабря 2009 года
urugvai
3 / / 13.12.2009
Вот полегче пример.
Библиотека 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 зеленый лазер
54K
13 декабря 2009 года
urugvai
3 / / 13.12.2009
А вот еше самое элементарное исключение.

программа 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);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог