Boat というクラスがあり、次のように記述した場合:
class Boat throws Exception
私のクラス内では、try catch ブロックを使用して、たとえば ArithmeticException をキャッチしています。例外を宣言しない場合と比較して、例外を宣言する利点は何ですか?
Boat というクラスがあり、次のように記述した場合:
class Boat throws Exception
私のクラス内では、try catch ブロックを使用して、たとえば ArithmeticException をキャッチしています。例外を宣言しない場合と比較して、例外を宣言する利点は何ですか?
最初のクラスは例外をスローせず、メソッドのみがスローします
この例を確認してください
class A
{
public A() throws Exception
{
int k=5/0;
}
}
public class B
{
public static void main(String[] args)
{
A a=new A();
}
}
上記を実行すると、コンパイル時エラーが発生します
Unhandled exception type Exception
メソッドが例外をスローするときはいつでも、オブジェクトを呼び出すことによって処理することが期待されているため、「誰かが例外を処理してください」と言っているのと同じであるため、それを呼び出すメソッドは例外を処理する必要があります。 .
プログラムをスムーズに実行するために、メソッドによってスローされた例外は、メソッドを呼び出して処理する必要があります。対処方法は次のとおりです。
class A
{
public A() throws Exception
{
int k=5/0;
}
}
public class B
{
public static void main(String[] args)
{
try{
A a=new A();
}
catch(Exception e)
{
System.out.println("caught "+e);
}
}
}
例外を宣言すると、コンパイラが例外を「エスケープ」すると判断できる場合、プログラムをコンパイルできます。ただし、主な目的は、メソッドのユーザー (およびそのコンパイラー) に、例外がスローされる可能性があることを文書化することです。
そのため、例外を宣言することと、より具体的な例外の原因を宣言することは、スキームの利点、つまり不正行為を無効にします。