我知道此类问题已经出现过,我已经把它们扔掉了,但没有得到我需要做的最后一部分。
My ExceptionClass
public class ProException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public ProException(String message) {
super(message);
}
}
我的ActivityClass(适用于ListView的Android自定义适配器)
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
try {
if (convertView == null) {
vi = inflater.inflate(R.layout.pause_client_trigger_request_select_sku_list_row, null);
tvItemName = (TextView) vi.findViewById(R.id.list_row_ItemName);
} else {
tvItemName = (TextView) vi.findViewById(R.id.list_row_ItemName);
}
hmap = new HashMap<String, String>();
hmap = data.get(position);
tvItemName.setText(hmap.get(KEY_ItemName));
} catch (ProException ex) {
Log.i(Tag, ex.getMessage());
}
return vi;
}
现在我想要的是。
如果在此try catch
任何异常中发生异常。
它应该由我的custom class (ProException)
捕获。但它不允许。
任何帮助
Java Eclipse编辑器中的消息
Unreachable catch block for ProException. This exception is never thrown from the try statement body
答案 0 :(得分:1)
所有这些视图都不了解您的自定义异常类。您必须扩展/编写自己的View
类,这些类会抛出您的自定义异常,或者在try
块中手动抛出异常。
throw new ProException();
答案 1 :(得分:0)
MD请告诉getView方法中的哪个调用可以抛出ProException。似乎该方法中的代码都没有抛出ProException,因此你得到了#34;这个异常永远不会从try语句体中抛出&#34;并阻止无法访问。为了在try catch中使用它应该获得Proexception,或者你可以在tryView的try catch中捕获Exception,然后将它包装在ProException中。
请查看这是否解决了这个问题。
答案 2 :(得分:0)
ProException是自定义异常。当代码块抛出异常时,它无法捕获,因为当您编写任何自定义异常时,层次结构变为
Exception->>ProException
如果代码块抛出任何异常,它将尝试找出Exception
而不是ProException
的catch块。或者用简单的术语It will try to find out type of exception
所以你必须抓住Exception
而不是ProException
每当你扔到某处时,自定义异常都会有所帮助。
答案 3 :(得分:0)
我认为你想要的是
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
try {
if (convertView == null) {
vi = inflater.inflate(R.layout.pause_client_trigger_request_select_sku_list_row, null);
tvItemName = (TextView) vi.findViewById(R.id.list_row_ItemName);
} else {
tvItemName = (TextView) vi.findViewById(R.id.list_row_ItemName);
}
hmap = new HashMap<String, String>();
hmap = data.get(position);
tvItemName.setText(hmap.get(KEY_ItemName));
} catch (Exception ex) {
Log.i(Tag, ex.getMessage());
throw new ProException(ex.getMessage());
}
return vi;
}
然后调用代码可以捕获ProException。您应该考虑将导致异常作为ProException的构造函数参数(然后您可以将其传递给super(cause,message))。