编写我自己的异常类

时间:2012-10-01 08:11:59

标签: java exception


public class ApplicationException extends Exception 
{
    private static final long serialVersionUID = 1L;

    public ApplicationException()
    {
        super();
    }

    public ApplicationException(String message)
    {
        super(message);
    }
}

public class Utilities 
{
    public static byte[] ParseHehadecimalString(String s)    // error 1
    {
        throw new ApplicationException("ParseHehadecimalString not implemented");
    }
}

public class Client extends Activity {
{
    public void OnBtnSendClick(View v)
    {
        String s = et_client_out.getText().toString();
        byte[] bytes;

        try
        {
            bytes = Utilities.ParseHehadecimalString(s);
        }
        catch(ApplicationException ex)    // error 2
        {
            Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();
            return;
       }
}

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

错误2:ApplicationException的无法访问的catch块。永远不会从try语句主体

抛出此异常

如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

错误1需要看起来像

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

错误2因错误而未通过此异常1.一旦错误1被修复,错误2将消失

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

尝试

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

通过这种方式,您将声明您的方法可能会抛出该异常。

答案 3 :(得分:2)

您忘了声明您的Methods抛出ApplicationException:

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

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

答案 4 :(得分:2)

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

需要在方法头中声明已检查的异常,以便编译器知道该方法可能会抛出此异常。你没有这样做,所以编译器认为该方法不能抛出此异常。如果未在方法标题中声明它们,则可能会抛出未经检查的异常。

相关问题