如果我有一个名为Boat的课程,如果我写的话:
class Boat throws Exception
在我的类中,我使用try catch块来捕获ArithmeticException。 声明异常与不声明异常有什么好处?
答案 0 :(得分:3)
class
不会抛出异常。只做方法。
对于某些例外(在代码中可能发生的已检查异常以及您未捕获的异常),编译器会强制您声明它们。
您永远不必声明RuntimeExceptions(例如ArithmeticException),但您可以。这可作为文档。
您可以声明代码不会抛出的已检查异常。如果您以后想要抛出它们,这可以使它具有前瞻性,并且还允许子类执行此操作。
在声明例外情况时,您可以使用广泛/通用(throws Exception
甚至throws Throwable
),但通常情况下更具体一些。这使得使用您的代码的人更好地了解期望的内容。拥有这些许多特定的异常类的全部目的是为了更容易地适当地处理异常(并让编译器强制执行某人至少考虑过这样做的事实。)
答案 1 :(得分:2)
声明异常将允许程序编译,如果编译器可以确定任何异常“转义”。但是,它的主要目的是向您的方法(及其编译器)的用户记录它可能会抛出异常。
因此,声明异常,声明更具体的异常原因,正在使该方案的好处无效 - 作弊。
答案 2 :(得分:2)
如果你这样写,
double x = 1/0;
System.out.print("hey");
它会给你一个例外,你的代码将停止,不会打印嘿。但如果你用try/catch
封装它,它就不会停止。
try{
double x = 1/0;
}catch(ArithmeticException){}
System.out.print("hey");
这将打印嘿。
答案 3 :(得分:2)
第一个类不会抛出异常,只会抛出方法
检查此示例
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);
}
}
}