Android:异常处理
我的android应用程序尝试使用Android:异常处理,android,exception-handling,httpwebrequest,Android,Exception Handling,Httpwebrequest,我的android应用程序尝试使用 response = client.execute(getRequest); 但是,服务器可能会关闭,在这种情况下,我想抛出一个自定义的异常,并显示一条自定义消息,而不是android提供的消息,表示应用程序意外关闭 有什么方法可以做到这一点吗?您可以尝试将调用包装在try-catch块中,捕获通用异常类型,然后处理它(查看服务器是否关闭),然后抛出自定义异常 try { response = client.execute(getRequest);
response = client.execute(getRequest);
但是,服务器可能会关闭,在这种情况下,我想抛出一个自定义的异常
,并显示一条自定义消息,而不是android提供的消息,表示应用程序意外关闭
有什么方法可以做到这一点吗?您可以尝试将调用包装在try-catch块中,捕获通用异常类型,然后处理它(查看服务器是否关闭),然后抛出自定义异常
try
{
response = client.execute(getRequest);
}
catch(Exception e)
{
//processing
throw new MyCustomException();
}
编写您自己的类
MyException扩展异常{…
,并为其提供一些自定义实现。这些实现可以在该类的构造函数中,也可以在某些方法中
然后像扔一样扔-
try{
response = client.execute(getRequest);
}catch(Exception e){
//handle your exception
throw new MyException();
}
您能否在异常块中打印
e.printstacktrace();
我认为您将在那里获得有关您所获得的异常类型的详细信息。如果您还希望向用户显示此自定义消息,您可以通过以下方式执行此操作:
try {
response = client.execute(getRequest);
} catch(Exception e) {
Toast.makeText(getApplicationContext(), "My custom message", Toast.LENGTH_LONG).show();
throw new Exception("My custom message", e);
}
我用ACRA解决了这个问题 您可以覆盖默认的崩溃报告,并使用
@ReportsCrashes(formKey="dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ",
mode = ReportingInteractionMode.TOAST,
forceCloseDialogAfterToast = false, // optional, default false
resToastText = R.string.crash_toast_text)
感谢您的及时回复,我实际上正在使用一个try-catch块try{//execute-request-response=client.execute(getRequest);}catch(ClientProtocolException e){Log.e(“ClientProtocolException”,e.toString();}catch(IOException e){Log.e(“IO exception”,e.toString());抛出新运行时异常(“错误”);}然而,它仍然给我一个通知,说应用程序意外关闭了。你是否处理上次捕获时抛出的RuntimeException?当出现未捕获的异常时,你的应用程序将崩溃。问题是,当它引用的服务关闭时,我的应用程序将不可避免地崩溃。我想做的是显示消息的ead-应用程序意外失败并崩溃…显示一条消息,说明服务器已关闭,请稍后重试,并允许应用程序在不显示默认错误消息的情况下崩溃问题是,当它所引用的服务关闭时,我的应用程序将不可避免地崩溃。我要做的不是显示正在放置消息-应用程序意外失败并崩溃…显示一条消息,说明服务器已关闭,请稍后重试,并允许应用程序在不显示默认错误消息的情况下崩溃
@ReportsCrashes(formKey="dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ",
mode = ReportingInteractionMode.TOAST,
forceCloseDialogAfterToast = false, // optional, default false
resToastText = R.string.crash_toast_text)