-4
公共类 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

5 回答 5

2

错误 1 ​​需要看起来像

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

错误 2 由于错误 1 ​​没有通过此异常。一旦错误 1 ​​被修复,错误 2 将消失

链接描述了如何向方法签名添加例外。

于 2012-10-01T08:14:05.557 回答
2

声明方法抛出您的异常。这是很好的链接

public static byte[] ParseHehadecimalString(String s)  throws ApplicationException
于 2012-10-01T08:14:17.390 回答
2

尝试

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

这样,您将声明您的方法可能会引发该异常。

于 2012-10-01T08:14:29.940 回答
2

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

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

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

于 2012-10-01T08:14:47.717 回答
2

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

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

于 2012-10-01T08:17:03.993 回答