我有一個簡單的Java代碼問題。我試圖在構造函數中拋出異常,並在那裏處理它。但它不會編譯,因爲在main函數中也需要處理這個異常。我收到錯誤 - 「未處理的異常類型MyException」(在主函數中)。 IIF我把try和catch塊放在main裏面效果很好,但是儘管如此,MyException卻是在FailingConstructor類的Constructor中處理的。構造函數中的異常,java
我想知道爲什麼我需要處理這個異常兩次?
class MyException extends Exception{
MyException()
{
System.out.println("Throws MyException");
}
}
public class FailingConstructor{
int a;
int b;
FailingConstructor(int a, int b) throws MyException
{
try{
this.a=a;
if(this.a==9)
{
throw new MyException();
}
this.b=b;
}catch(MyException e)
{
System.out.println("Wyjatek z poziomu konstruktora");
}
}
public static void main(String[] args)
{
FailingConstructor nowy = new FailingConstructor(9,6);
System.out.println(nowy.a);
System.out.println(nowy.b);
}
}
碼本的主要功能運作良好:
public static void main(String[] args)
{
try{
FailingConstructor nowy = new FailingConstructor(9,6);
System.out.println(nowy.a);
System.out.println(nowy.b);
}
catch(MyException e)
{
e.printStackTrace();
}
}
它從構造函數 – Camilo
中移除'throws MyException'它的工作原理,謝謝! – user3131037