【问题标题】:Writing my own exception class编写我自己的异常类
【发布时间】:2012-10-01 08:11:59
【问题描述】:
公共类 ApplicationException 扩展异常 { 私有静态最终长序列版本UID = 1L; 公共应用程序异常() { 极好的(); } 公共应用程序异常(字符串消息) { 超级(消息); } } 公共类实用程序 { public static byte[] ParseHehadecimalString(String s) // 错误 1 { throw new ApplicationException("ParseHehadecimalString 未实现"); } } 公共类客户端扩展活动{ { 公共无效 OnBtnSendClick(查看 v) { 字符串 s = et_client_out.getText().toString(); 字节[] 字节; 尝试 { bytes = Utilities.ParseHehadecimalString(s); } catch(ApplicationException ex) // 错误 2 { Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show(); 返回; } }

错误1:未处理的异常类型ApplicationException

错误 2:无法访问 ApplicationException 的 catch 块。 try 语句体永远不会抛出这个异常

如何解决这个问题?

【问题讨论】:

  • 4 次投反对票,没有任何 cmets?我试图猜测我的问题有什么愚蠢的......

标签: java exception


【解决方案1】:

错误 1 ​​需要看起来像

public static byte[] ParseHehadecimalString(String s) throws ApplicationException {

错误2没有通过这个异常,因为错误1。一旦错误1被修复,错误2就会消失

This 链接描述了如何向方法签名添加异常。

【讨论】:

    【解决方案2】:

    试试

    public static byte[] ParseHehadecimalString(String s) throws ApplicationException
    

    这样,您将声明您的方法可以抛出该异常。

    【讨论】:

      【解决方案3】:

      您忘记声明您的方法抛出 ApplicationException:

      public static byte[] ParseHehadecimalString(String s) throws ApplicationException
      

      您可能需要考虑使用像 Eclipse 这样的 IDE,它会立即指出此类错误。

      【讨论】:

        【解决方案4】:

        在 Java 中有checked and unchecked exceptions。您的异常从异常扩展,因此它是一个检查异常。未经检查的异常从 RuntimeException 扩展而来。

        检查的异常需要在方法头声明,以便编译器知道该方法可能会抛出这个异常。你没有这样做,所以编译器认为该方法不能抛出这个异常。未经检查的异常可能会在没有在方法头中声明的情况下被抛出。

        【讨论】:

          【解决方案5】:

          Declare 方法抛出异常。这是不错的link

          public static byte[] ParseHehadecimalString(String s)  throws ApplicationException
          

          【讨论】:

            猜你喜欢
            • 2011-10-01
            • 1970-01-01
            • 2013-02-04
            • 2012-03-11
            • 1970-01-01
            • 1970-01-01
            • 2014-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多