我正在学习如何在java中抛出一个超级简单的异常。我有以下内容:
public Percolation(int N) // create N-by-N grid, with all sites blocked
{
if(N < 1)
throw new Exception("N must be greater than zero.");
grid = new boolean[N * N + 2];
dimension = N;
grid[0] = true;
grid[N+1] = true;
unionStruct = new QuickFindUF(N+2);
}
它不是编译,但这是我想要做的事情。这样做的正确语法是什么?
答案 0 :(得分:3)
这是因为你在没有声明你要抛出的异常的情况下抛出一个已检查的异常。在您的情况下,您可能应该抛出从RuntimeException派生的异常,并且不检查这些异常(意味着您不必声明它们)。所以解决这个问题的两种方法是
throw new IllegalArgumentException("N must be greater than zero."); // unchecked
或
public Percolation(int N) throws Exception
答案 1 :(得分:2)
您必须声明构造函数抛出异常
public Percolation(int N) throws Exception {} //create N-by-N grid, with all sites blocked
答案 2 :(得分:1)
我怀疑您没有指定抛出异常。告诉我们你收到了什么错误。
与此同时,试试这个:
public Percolation(int N) throws Exception
{
if(N < 1)
throw new Exception("N must be greater than zero.");
...
Java中有两种类型的异常:
抛出未经检查的异常,或者指定抛出异常,就像我在上面的代码中所做的那样。
在这种情况下,您要查找的未经检查的例外情况为IllegalArgumentException
。