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语句主体
抛出此异常如何解决这个问题?
答案 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扩展。
需要在方法头中声明已检查的异常,以便编译器知道该方法可能会抛出此异常。你没有这样做,所以编译器认为该方法不能抛出此异常。如果未在方法标题中声明它们,则可能会抛出未经检查的异常。