Java 如何处理IOException
在我的Android Studio项目中,我发现了很多“错误:(38,45)错误:未报告的异常IOException;必须捕获或声明为抛出”错误。如何解决这些错误 这是我的代码:Java 如何处理IOException,java,io,Java,Io,在我的Android Studio项目中,我发现了很多“错误:(38,45)错误:未报告的异常IOException;必须捕获或声明为抛出”错误。如何解决这些错误 这是我的代码: public class ActivityHome extends Activity { private final static String QUEUE_NAME = "AndroidJava"; public void onCreate(Bundle savedInstanceState) {
public class ActivityHome extends Activity {
private final static String QUEUE_NAME = "AndroidJava";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("xx.xx.xx.xx");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello Java!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}
}
我建议阅读
ActivityHome.onCreate()
中使用的依赖项的Javadocs,以确定抛出的是什么,尤其是与数据库相关的Javadocs。一旦确定了引发异常的原因,就可以使用如下try-catch
块来处理可能的问题:
try{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("xx.xx.xx.xx");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello Java!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
} catch(IOException e) {
e.printStackTrace() //Or log it to a file, or clean up resources
}
或者抛出
,强制调用您的方法来处理它:
public onCreate(Bundle savedInstanceState) throws IOException {
//body
}
可以帮助确定哪个更适合您的用例。谢谢Brandon。我不知道为什么IOException只发生在Android studio而不是Eclipse上。实际上,该程序可以在Eclipse上很好地工作。当我在android studio上添加try catch时,比如try{}。。。catch(Exception e){statement1;}结果将是statement1。主要原因是Eclipse代码在调用这些异常的方法中有
抛出异常。你知道我是如何提到抛出强制调用方处理异常的吗?处理该错误的方法是错误的,因为它们使用抛出IOException
,并且编译器正在执行强制您处理异常的任务。在Eclipse中,您通过向调用者抛出异常来处理它,但在Android Studio中没有这样做。错误仍然存在。您在try块中放置了什么?它是否封装了引发IOException
的所有内容?我编辑了我的答案来演示。谢谢。通过使用您提供的代码,我发现新的错误是:error:(39,23)error:unreportedexceptiontimeoutexception;必须被抓住或宣布被抛出。