java - java中永远不会出现的异常

标签 java exception

我为点和 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/

相关文章:

java - 是否可以使用 JAX WS Dispatch API 处理用户定义的异常?

c++ - 未处理的异常,即使在添加 try-catch block 之后? C++

c# - ArgumentException 的正确用法?

java - 更新 mongoDB

java - 需要帮助开始使用 Amazon EC2 进行 Java 项目

java - Rails 操作未响应 Java POST

java - 如何从resilience4j TimeLimitter 抛出自定义异常?

java - 位于 ListView 行中的按钮总是在最后一行触发

Java - 按值传递示例

.net - 为什么 .NET 中没有 ArgumentEmptyException?