2015-03-27 2 views
1

Может ли кто-нибудь мне помочь? Компилятор не распознает исключение e, но как я должен его объявить? Приложение просто должны разделить два числа метательные исключение, если второе является 0.divide by zero exception

#include <iostream> 
#include <exception> 

using namespace std; 

float divide(float, float) throw(exception); 

int main(int argc, char** argv) { 

    float a,b; 

    float c=0; 
    cin>>a; 
    cin>>b; 
    try{ 
    c=divide(a,b); 
    } 
    catch(Exception e){ 
    cout<<"You cannot do this"; 
    }; 
    return 0; 
} 

float divide(float a, float b) throw(exception) { 
    float c=a/b; 
    if(b==0) 
    throw Exception &e; 
    return c; 
} 
+0

Предварительно упреждающий -1, если это оказывается «Исключение/исключение». –

+0

Это, безусловно, часть этого. Тем не менее, я был бы очень удивлен, увидев компилятор, который принимает 'throw exception & e;'. – Wintermute

+0

После того, как вы исправили опечатку, вам нужно протестировать перед делением, а не после. В противном случае деление приведет к неопределенному поведению: оно может привести к сбою программы, и компилятору разрешено считать, что он не равен нулю и исключает тест. –

ответ

1

Ну, вы пытались использовать класс Exception, но никогда не объявлял его. Так не существует.

Вы можете использовать один из стандартных типов исключений. На самом деле, похоже, вы пытаетесь использовать базовый класс std::exception: это нижний регистрe.

Я предлагаю std::runtime_error от <stdexcept>, вместо этого.

+0

Я справился с этой проблемой благодаря всем вам – Xdroid

Смежные вопросы