【问题标题】:Exception Classes in JavaJava中的异常类
【发布时间】:2016-01-08 17:37:21
【问题描述】:

异常处理:直接引用一位教授的话,“虽然可以在程序中直接使用异常类,但最好使用特定的异常类。”他没有详细说明,但我很想知道其他人的想法,如果他是对的,为什么?

【问题讨论】:

标签: java exception exception-handling


【解决方案1】:

我的两分钱:

与 API 的任何其他部分一样,异常应该尽可能具体。这与您应该使用特定类型作为StringIntegerDate 而不是普通的Objects 的原因相同。

【讨论】:

    【解决方案2】:

    您的教授可能的意思是,发送SomeTypeException 比发送一些短信Exception 更好。

    为什么使用类型化异常更好?

    1. 您可以捕获特定类型的异常。

      try {
          ...
      } catch(ExceptionType1 e) {
          ...
      } catch(ExceptionType2 e) {
          ...
      }
      
    2. 方法抛出的异常类型为程序员提供了有关该方法的有价值的信息。

      void someMethod() throws SQLException, ParserException { ... }
      

      比以下更有意义:

      void someMethod() throws Exception { ... }
      

    【讨论】:

    • 这样会更好。他通常会说一些话并且会说“不要问为什么,只要知道这是真的”,但我不禁想知道一个更大的解释。谢谢!
    【解决方案3】:

    他的意思是没有什么能阻止你做throw new Exception( "this happened" );throw new Exception( "that happened" );

    但最好的做法是使用throw new ThisException()throw new ThatException();

    那是因为你可以在其他地方catch( ThisException e ) 处理它,确切地知道发生了什么,而不必catch( Exception e ) 想知道它是因为“这个”发生了,还是因为“那个”发生了。

    我曾经遇到过必须执行String s = e.getMessage(); 然后尝试解析字符串以尝试理解它的情况,相信我,做这样的事情一点也不好玩。

    【讨论】:

    • 他也可能意味着不要使用 Exception catch 块,而是使用特定的异常捕获块,所以真正的答案过于宽泛且基于意见。
    • @hagrawal 好吧,他可能就是这个意思,尽管我对此表示怀疑。无论如何,我想我已经涵盖了这两种情况。我认为这是一个合理的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2013-06-20
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多