写什么"尝试"语句 - Java - 异常处理?

时间:2015-11-15 21:33:14

标签: java try-catch

在Java中有另一个问题 - 这次是关于异常处理 - 我似乎无法找到具体的答案。

我有一个Main Class和一个Customer Class以及Exception类(但我没有在这里粘贴):

public String Customer(String model) throws InvalidCar
{
    String carModel;

    if (validateCar(carModel))
    {
        carModel = model;
    }
    else
    {
        InvalidCar f = new InvalidCar(carModel);
        throw f;
    }

我在" catch"中收到错误声明 - "异常永远不会在相应的try语句的主体中抛出"。

我遇到的问题是 - 我不知道在try语句中写什么来使其发挥作用。

{{1}}

任何帮助都会受到赞赏 - 我对此非常困惑,也许我只是在问错误的问题?

3 个答案:

答案 0 :(得分:0)

你需要调用你的函数 - 你的try块中的Customer(string model)。然后可以抛出异常,你不会再得到错误,比如

public static void main(String[] args)
{
    try
    {
        // what can i write in here to make this a valid exception?
        String model = Customer("myModel");
    }
    catch (InvalidCar e)
    {
        System.err.println("test");
    }
}

答案 1 :(得分:0)

那是因为你的try块永远不会抛出InvalidCustomer,如果你使用上面的Customer函数,那么可能只会抛出InvalidCar,在这种情况下,InvalidCustomer不是public String Customer(String model) throws InvalidCustomer{ String carModel; if (validateCar(carModel)) { carModel = model; } else { throw new InvalidCustomer(); } 的子类1}}。

这可能会按预期工作:

main()

然后,在 try{ String model = Customer("Illegal Model"); }catch(InvalidCustomer e){ System.out.println("gotcha"); }

        JSONObject searchASongJSSON = new JSONObject();
        searchASongJSSON.put("artist", artist);
        searchASongJSSON.put("title", title);

        publishProgress("Creating request");

        HttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPostReq = new HttpPost("http://"+CONNECTION_HOST+":"+CONNECTION_PORT);
        StringEntity se = new StringEntity(searchASongJSSON.toString());
        System.out.println(searchASongJSSON.toString());

        httpPostReq.setHeader("Accept", "application/json");
        httpPostReq.setHeader("Content-type", "application/json");
        se.setContentType("application/json;charset=UTF-8");
        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json;charset=UTF-8"));
        InputStream is = se.getContent();
        byte inpData[] = new byte[is.available()];
        is.read(inpData);
        is.close();
        System.out.println(new String(inpData));

        httpPostReq.setEntity(se);
        System.out.println(httpPostReq.getRequestLine());

        publishProgress("Sending Request");
        HttpResponse httpresponse = httpclient.execute(httpPostReq);

答案 2 :(得分:0)

您收到错误的原因是因为try块中没有会引发异常的代码。

System.out.println("test");不会抛出异常。

要使其工作,请调用抛出InvalidCustomer异常的方法。

在try块中写String customer = Customer("carModel");。还要确保此方法实际上会抛出InvalidCustomer。看起来它只是抛出InvalidCar异常。 最好将您的方法(客户)重命名为小写' c'。