我为点和 vector 编写了一个类。我想用它们来计算 vector 的点和范数。 这些是点和 vector 类
public class Point {
public float x,y;
}
public class MyVector {
public Point start,end;
}
我编写这些代码用于点计算。
public float dot(MyVector v) throws Exception
{
if( (start.x != v.start.x) || (start.y != v.start.y))
throw new Exception("Vectors not begin in same Point");
}
我想用这个函数来计算 vector 的范数。
public float norm()
{
return dot(this);
}
我知道范数函数永远不会发生异常情况。所以我不会扔 异常(exception)。我知道我可以这样做:
public float norm()
{
try
{
return dot(this);
}
catch(Exception e)
{
}
}
但我认为这是多余的。有没有办法删除norm函数中的try和catch?
最佳答案
这个意图无法用java来表达。函数点是否抛出异常。
您不能给它一个“提示”来指定在某些条件下永远不会引发异常。
您可以忍受这种情况,也可以改用仅使用 RuntimeException。
或者你可以将其重构为这样的
public float dot(MyVector v) throws Exception
{
if( (start.x != v.start.x) || (start.y != v.start.y))
throw new Exception("Vectors not begin in same Point");
return unchecked_dot(MyVector v)
}
其中 unchecked_dot 执行实际操作,但不检查参数,也不声明抛出异常。
public float norm()
{
return uncheked_dot(this);
}
关于java - java中永远不会出现的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009056/