把 int a = 1 / 0; 这一行 try -catch 掉就行了
你把try写进循环里面就行了
现在是一旦进入catch就跳出循环了呀
换句话说,把try和for的位置换一换
你把 1/0 try{} catch 不就行了
不知道你这个问题是否已经解决, 如果还没有解决的话:编写永远运行的系统,与编写运行一段时间后平静地关闭的系统是两码事。
平静关闭很难做到。常见问题与死锁[15]有关,线程一直等待永远不会到来的信号。
例如,想象一个系统中有个父线程分裂出数个子线程,父线程等待所有子线程结束,然后释放资源并关闭。如果其中一个子线程发生死锁会怎样?父线程将一直等待下去,而系统就永远不能关闭。
或者,考虑一个被指示关闭的类似系统。父线程告知全体子线程放弃任务并结束。如果其中两个子线程正以生产者/消费者模型操作会怎样呢?假设生产者线程从父线程处接收到信号,并迅速关闭。消费者线程可能还在等待生产者线程发来消息,于是就被锁定在无法接收到关闭信号的状态中。它会死等生产者线程,永不结束,从而导致父线程也无法结束。
这类情形并非那么不常见。如果你要编写涉及平静关闭的并发代码,请多预留一些时间搞对关闭过程。
建议:尽早考虑关闭问题,尽早令其工作正常。这会花费比你预期更多的时间。检视既有算法,因为这可能会比想象中难得多。
要在代码中处理异常并继续执行后续代码,可以使用try-except语句。在try块中,放置可能会抛出异常的代码,然后在except块中处理异常。以下是一个示例代码解决方案:
try:
# 这里是可能会抛出异常的代码
...
except Exception as e:
# 这里是希望处理异常的代码,以便能够继续执行后续代码
print(f"发生了一个异常: {e}")
# 这里是我希望能够继续执行的代码
...
在上面的代码中,如果try块中的代码抛出了异常,程序会跳转到except块来处理异常。你可以在except块中添加你希望执行的代码,可以打印异常信息或者采取其他行动。然后,程序会继续执行try-except语句后面的代码。
举个例子,假设你希望在下面的代码中遇到异常时打印数字7、8、9:
try:
# 这里是可能会抛出异常的代码
for i in range(10):
if i == 6:
raise ValueError("出现了一个异常")
print(i)
except ValueError as e:
# 这里是希望处理异常的代码,以便能够继续执行后续代码
print(f"发生了一个异常: {e}")
# 这里是我希望能够继续执行的代码
for i in range(7, 10):
print(i)
运行上述代码,输出结果将会是:
0
1
2
3
4
5
发生了一个异常: 出现了一个异常
7
8
9
当循环执行到数字6时,会抛出一个ValueError的异常,然后程序跳转到except块中打印出异常信息。接着,继续执行后续代码打印出数字7、8、9。注意,这个示例中使用了一个特定的异常ValueError,你可以根据实际情况使用适合的异常类型。
希望以上解决方案能够帮助到你!如果有任何问题,请随时追问。