我有多个try catch块。我希望让我的程序这样运行,如果第一个块中找不到某些内容,那么该块的catch就会将其传递给另一个try catch块。 我进行了一些研究,但无法得出解决方案。
try{
Something
} catch (Exception e) {
Move to next set of try catch
}
这就是我想要实现的。
我有多个try catch块。我希望让我的程序这样运行,如果第一个块中找不到某些内容,那么该块的catch就会将其传递给另一个try catch块。 我进行了一些研究,但无法得出解决方案。
try{
Something
} catch (Exception e) {
Move to next set of try catch
}
这就是我想要实现的。
来自评论:
我有4个元素需要创建try catch块,即4个try catch块
如果要尝试4个不同的代码块,则可以编写如下代码:
try {
// Attempt 1
} catch (Exception e1) {
try {
// Attempt 2
} catch (Exception e2) {
try {
// Attempt 3
} catch (Exception e3) {
try {
// Attempt 4
} catch (Exception e4) {
RuntimeException e = new RuntimeException("All attempts failed", e1);
e.addSuppressed(e2);
e.addSuppressed(e3);
e.addSuppressed(e4);
throw e;
}
}
}
}
try {
method1();
}finally {
try {
method2();
}finally {
try {
method3();
}finally {
try {
method4();
}finally {
}
}
}
}
public void tryBlock() {
try {
// Enter Your Code;
} catch (Exception e) {
System.out.println(" exception :: " + e);
tryBlock();
}
}
你可以使用简单的 try-catch 结构,例如:
try{
something;
}catch(exception){
Exception2;
}
catch(exception2){
Exception2;
}
Or you can use nested try-catch like:
try{
statement
try{
statement
try{
something
}catch(exception1){
Exception
}
}catch(exception2){
Exception2
}
}catch(Exception3){
Exception3
}
@Kaneki 如果你想要使用嵌套的try-catch块执行,以便如果操作不在try块内执行,则操作将在catch块中执行
为此,您必须测试条件,无论您是否想要转发到catch块。
注意:要从Try块转发到Catch块,您必须从Try块抛出异常,该异常必须被Catch块捕获。
根据您的要求,此代码可能会对您有所帮助:
public void nestedTryCatch(){
boolean wantTogoForNext = false;
try{
wantTogoForNext = false;
doSomthing("Attempt-I");
wantTogoForNext = true;
if(wantTogoForNext)
throw new Exception("1");
}catch(Exception e1){
try{
wantTogoForNext = false;
doSomthing("Attempt-2");
wantTogoForNext = true;
if(wantTogoForNext)
throw new Exception("2");
}catch(Exception e2){
try{
wantTogoForNext = false;
doSomthing("Attempt-3");
wantTogoForNext = true;
if(wantTogoForNext)
throw new Exception("3");
}catch(Exception e3){
try{
wantTogoForNext = false;
doSomthing("Attempt-4");
wantTogoForNext = true;
if(wantTogoForNext)
throw new Exception("4");
}catch(Exception e4){
try{
wantTogoForNext = false;
doSomthing("Attempt-5");
wantTogoForNext = true;
if(wantTogoForNext)
throw new Exception("5");
}catch(Exception e5){
doSomthing("Attempt-Last");
}
}
}
}
}
}
public void doSomthing(String attempt){
System.out.println(attempt);
}