在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}}
任何帮助都会受到赞赏 - 我对此非常困惑,也许我只是在问错误的问题?
答案 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'。