假设我有一个引发异常的方法:
def methodA(x, y):
if y != 0:
z = x / y
return z
else:
raise ZeroDivisionError("zero can not be a denominator")
Run Code Online (Sandbox Code Playgroud)
在方法B中,我调用了methodA而没有处理异常:
def methodB(x, y):
print methodA(x, y)
Run Code Online (Sandbox Code Playgroud)
在这里,我想要一些可以警告我ZeroDivisionError在methodB中存在潜在风险的东西,并且最好抓住它.有没有办法在方法A中添加某些代码,或者我们可以使用一些工具来找到我忽略了一些重要的异常吗?
SVector.H:
void pop_back() throw (underflow_error);
Run Code Online (Sandbox Code Playgroud)
在我的SVector.cpp文件中,我是否还应该包含throw(underflow_error)部分?
void pop_back() throw (underflow_error)
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
要么
void pop_back()
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我看到了以下类定义,无法弄清第1行的含义.
class Noisy {
public:
Noisy() throw();
~Noisy() throw();
Noisy& operator= (const Noisy&) throw();
Noisy (const Noisy&) throw(); // Line 1
};
Run Code Online (Sandbox Code Playgroud)
这条线的含义是什么?这条线的用途是什么?
谢谢
任何人都可以向我解释C++中标准异常的定义:
virtual const char* what() const throw();
Run Code Online (Sandbox Code Playgroud)
const throw()最后意味着什么?
我不确定这个问题是否合适,但我会尽我所能.
这是我的作业问题.如果两条线平行或相等,则作业要求我抛出异常.
原始代码由我的教授提供,我的工作是修改它以使其能够抛出异常.
line.h
class RuntimeException{
private:
string errorMsg;
public:
RuntimeException(const string& err) { errorMsg = err; }
string getMessage() const { return errorMsg; }
};
class EqualLines: public RuntimeException{
public:
//empty
};
class ParallelLines: public RuntimeException{
public:
//empty
};
class Line{
public:
Line(double slope, double y_intercept): a(slope), b(y_intercept) {};
double intersect(const Line L) const throw(ParallelLines,
EqualLines);
//...getter and setter
private:
double a;
double b;
};
Run Code Online (Sandbox Code Playgroud)
教授告诉我们不要修改头文件,只能修改.cpp文件.
line.cpp
double Line::intersect(const Line L) const throw(ParallelLines,
EqualLines){
//below is my own code …Run Code Online (Sandbox Code Playgroud)