有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java声明异常的优势

如果我有一个叫做Boat的类,如果我写:

class Boat throws Exception

在我的类中,我使用try-catch块捕获算术异常。 与不声明异常相比,声明异常有什么好处


共 (4) 个答案

  1. # 1 楼答案

    如果编译器可以确定任何异常为“转义”,则声明异常将允许您的程序进行编译。不过,它的主要目的是向方法的用户(及其编译器)记录它可能引发异常

    因此,声明异常与声明更具体的异常原因相比,是在抵消该方案的好处——欺骗

  2. # 2 楼答案

    如果你写这样的东西

    double x = 1/0; 
    System.out.print("hey");
    

    它将给您一个异常,您的代码将停止,不会打印。但是如果用try/catch封装它,它将不会停止

    try{
        double x = 1/0; 
    }catch(ArithmeticException){}
    System.out.print("hey");
    

    这将打印

  3. # 3 楼答案

    • Aclass不会引发异常。只有方法可以

    • 对于某些异常(代码中可能出现但未捕获的已检查异常),编译器会强制您声明它们

    • 您永远不必声明运行时异常(例如算术异常),但您可以。这可以作为文档

    • 您可以声明代码不会抛出的已检查异常。如果您以后想要抛出它们,这将是未来的证明,并且允许子类这样做

    • 在声明异常时,可以使用广义/泛型(throws Exception甚至throws Throwable),但通常最好更具体一些。这使使用您的代码的人更好地了解您的期望。拥有这些特定异常类的全部目的是使适当地处理异常变得更容易(并且让编译器强制执行至少有人考虑过这样做的事实)

  4. # 4 楼答案

    第一个类不会抛出异常,只有方法才会抛出异常

    检查这个例子

    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
    

    因为当任何方法抛出异常时,它们都应该通过调用对象来处理,这就像说“Hey someone handle 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);
    }
    
    }
    }