我看到有趣的行为.我正在运行此代码
public class ThreadsTest {
public static void main(String[] args) {
Runnable mr = new MyRunnable();
Thread t1 = new Thread(mr);
Thread t2 = new Thread(mr);
t1.setName("first");
t2.setName("second");
t1.start();
t2.start();
t1.run();
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i=0; i < 2; i++) {
System.out.println("Running: " + Thread.currentThread().getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
Running: first
Running: first
Running: second
Running: second
Run Code Online (Sandbox Code Playgroud)
我期待看到类似的东西:
Running: first
Running: first
Running: second
Running: second
Running: main
Running: main
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我没有看到 …
这更像是一个最佳实践问题.我希望在这里提出这个问题是可以的.我正在创建一个将用作API的一部分的接口.我有一个方法getSomeObject(),在幕后有一个计算逻辑并返回SomeObject.我在后台调用抛出的方法IllegalArgumentException,因此我的getSomeObject()方法可能会抛出此异常.我遇到的问题是API的用户不熟悉API的内部工作方式,也不理解抛出异常的原因.由于参数是在我的方法中创建的,并且用户甚至不知道该参数存在.我试图记录它,但这种异常的原因会使API的用户感到困惑.所以我的问题是,这样的情况最好的方法是什么?记录此异常的正确方法是什么?