gpt4 book ai didi

java - 捕获异常而不进入其 try block ?

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:47 26 4
gpt4 key购买 nike

我有一个有趣的问题。我的代码块如下所示。问题是:日志文件不包含“准备 sleep ......”行,但包含“备份线程被中断......”行。我的问题:是否可以在不进入 try block 的情况下捕获异常?

long sleepTime = runtime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis();

try {
log("Getting ready to sleep...(" + sleepTime + ")");

Thread.sleep(sleepTime);

Database db = new Database();
log(db.performDatabaseBackup());

// Set it to run the next day.
runtime.add(Calendar.DATE, 1);

} catch (InterruptedException ie) {
log("Backup thread was interrupted...");
}

编辑:记录方法

  private void log(String message) {
Logger.debug(this, message);
}

Logger.debug

public static void debug(
Object obj,
String message ){
debug( obj.getClass(), message );
}


public static void debug(
String className,
String message )
{
try
{
Class inputClass = Class.forName( className );
debug( inputClass, message );
}
catch ( ClassNotFoundException e )
{
debug( ( Class )null, message );
}
}

最佳答案

不,不可能捕获在执行 try block 期间未抛出的异常。可能的情况:

  1. InterruptedException 在您记录 “准备就绪...” 之前抛出,即在您的 log(...) 调用中。 (不太可能)

  2. 日志方法无法按预期工作,并且不会记录您的行。 (可能)您可以检查是否通过设置较长的 sleep 时间来执行 sleep 。那就暗示了这个原因。

  3. 您还有其他代码记录“备份线程被中断...”,这些代码会导致日志输出并且所提供的代码片段根本不执行。

关于java - 捕获异常而不进入其 try block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com