java声明异常的优势 4 月,3 周 Questions & Answers 149 如果我有一个叫做Boat的类,如果我写: class Boat throws Exception 在我的类中,我使用try-catch块捕获算术异常。 与不声明异常相比,声明异常有什么好处
# 1 楼答案 如果编译器可以确定任何异常为“转义”,则声明异常将允许您的程序进行编译。不过,它的主要目的是向方法的用户(及其编译器)记录它可能引发异常 因此,声明异常与声明更具体的异常原因相比,是在抵消该方案的好处——欺骗
# 2 楼答案 如果你写这样的东西 double x = 1/0; System.out.print("hey"); 它将给您一个异常,您的代码将停止,不会打印嘿。但是如果用try/catch封装它,它将不会停止 try{ double x = 1/0; }catch(ArithmeticException){} System.out.print("hey"); 这将打印嘿
# 3 楼答案 Aclass不会引发异常。只有方法可以 对于某些异常(代码中可能出现但未捕获的已检查异常),编译器会强制您声明它们 您永远不必声明运行时异常(例如算术异常),但您可以。这可以作为文档 您可以声明代码不会抛出的已检查异常。如果您以后想要抛出它们,这将是未来的证明,并且允许子类这样做 在声明异常时,可以使用广义/泛型(throws Exception甚至throws Throwable),但通常最好更具体一些。这使使用您的代码的人更好地了解您的期望。拥有这些特定异常类的全部目的是使适当地处理异常变得更容易(并且让编译器强制执行至少有人考虑过这样做的事实)
# 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); } } }
# 1 楼答案
如果编译器可以确定任何异常为“转义”,则声明异常将允许您的程序进行编译。不过,它的主要目的是向方法的用户(及其编译器)记录它可能引发异常
因此,声明异常与声明更具体的异常原因相比,是在抵消该方案的好处——欺骗
# 2 楼答案
如果你写这样的东西
它将给您一个异常,您的代码将停止,不会打印嘿。但是如果用
try/catch
封装它,它将不会停止这将打印嘿
# 3 楼答案
A
class
不会引发异常。只有方法可以对于某些异常(代码中可能出现但未捕获的已检查异常),编译器会强制您声明它们
您永远不必声明运行时异常(例如算术异常),但您可以。这可以作为文档
您可以声明代码不会抛出的已检查异常。如果您以后想要抛出它们,这将是未来的证明,并且允许子类这样做
在声明异常时,可以使用广义/泛型(
throws Exception
甚至throws Throwable
),但通常最好更具体一些。这使使用您的代码的人更好地了解您的期望。拥有这些特定异常类的全部目的是使适当地处理异常变得更容易(并且让编译器强制执行至少有人考虑过这样做的事实)# 4 楼答案
第一个类不会抛出异常,只有方法才会抛出异常
检查这个例子
当您运行上面的代码时,您将得到编译时错误消息
因为当任何方法抛出异常时,它们都应该通过调用对象来处理,这就像说“Hey someone handle exception”,所以调用它的方法应该处理异常,如果它们不这样做,这将是一个编译时错误
为了程序的顺利执行,应该通过调用方法来处理方法引发的异常。以下是您需要处理的问题