java - 从不同类的单独方法调用包含 throw InterruptedException 的方法
问题描述
我正在尝试编写一个程序,其中每个类都有单独的类和方法,这些类和其他类的方法交叉调用。下面是我想从另一个类的另一个方法调用的编码方法。
public class walk{
public void walk() throws InterruptedException {
Printer printer = new Printer();
printer.start();
}
}
这是单独类中的另一个方法调用它的方式。
public class Runner{
public static void main(String [] args) {
walk w1 = new walk();
w1.walk();
}
}
弹出的错误是error: unreported exception InterruptedException; 必须被捕获或声明为被抛出,并且它指出问题出在以下代码行。
w1.walk();
有谁知道如何从一个单独的类中调用这个方法,或者我在公共 void 行上做错了什么?
解决方案
InterruptedException不扩展 RuntimeException,您必须在调用时使用 try-catch 块处理声明的异常walk()
:
try {
w1.walk();
} catch (InterruptedException e) {
// TODO Handle exception, e.g. log it or notify the user.
}
另一种解决方案是使用 throws 在调用方法的方法签名中声明异常:
public void x() throws InterupptedException
walk w1 = new walk();
w1.walk();
}
当您想将异常处理传递给方法的调用者时,第二种方法是可行的。您可以声明主方法以引发异常,但恕我直言,主方法甚至应该捕获不可恢复的异常并至少记录它们。
Java 教程可以在处理异常时为您提供一些指导,我的建议是阅读Catch 或 Specify Requirement并熟悉 Java 中的三种异常。
推荐阅读
- c - 函数原型和块代码中的变量声明:区别?
- .net - 更新 IMemoryCache 服务器端
- glsl - 子组内存屏障有用性
- excel - 如何将 Excel 公式的一部分转换为值
- json - 获取文件中索引的所有文档 Elasticsearch 1.7
- php - Laravel 5.6 无需命令即可启动站点
- python - Pylint 无法识别 opencv 子模块
- c# - .NET 4.7.2 中使用 C# 的 AES GCM 加密
- google-analytics - gtag.js 事件跟踪 - 跟踪代码片段的位置
- android - 使用 retrofit2 和 rxjava2 对 android 应用程序进行单元测试