【问题标题】:How do I place my main method into a try catch block?如何将我的 main 方法放入 try catch 块中?
【发布时间】:2016-03-24 17:00:30
【问题描述】:

我正在制作一个游戏,并且我的 try 和 catch 块在方法中工作,但我分配的标准之一是将 main 方法也放入 try catch 块中。但是每当我将 main 方法包装在 try{ } 块中时,它都会给我一个编译错误:Illegal start of type。我已经查过了,我得出的结论是我需要将 try 块放入它自己的方法中,但是当我这样做时,我得到了一个非法的表达式开始。如何将我的 main 方法放入 try catch 块中?

主要方法:

public static void main(String[] args){
    Board board = new Board();
    board.display();
    board.validate();
}

当我尝试将其包装在 try catch 块中时(非法启动类型)

try{
    public static void main(String[] args){
        Board board = new Board();
        board.display();
        board.validate();
    }
}

当我试图将它放在一个方法中时(表达式的非法开始)

    public void tryCatch(){

       try{
           public static void main(String[] args){
               Board board = new Board();
               board.display();
               board.validate();
           }        
      }
  }

【问题讨论】:

  • “但我的分配标准之一是将 main 方法也放入 try catch 块中。”请重新阅读您的标准。你所问的在 Java 中是不可能的(至少如果它意味着直接在 try-catch 块中声明方法)。你可以做的是让你的方法重新抛出异常(通过添加throwsclausule)。您可能还会被要求在一些 try-catch 块中调用您的方法。

标签: java exception try-catch main


【解决方案1】:

你不这样做,你将 main 方法的内容包装在 try-catch 中,或者让 main 方法重新抛出结果异常

public static void main(String[] args){
    try {
        Board board = new Board();
        board.display();
        board.validate();
    } catch (... exp) {
        exp.printStackTrace();
    }
}

仔细查看Catching and Handling Exceptions了解更多详情

【讨论】:

  • 不相关 但我很想知道您为什么将答案添加为社区 wiki?
  • @TAsk 坦率地说,问题是(恕我直言)低质量,这是对语言语法的简单误解,可以通过阅读任意数量的教程来解决。就个人而言,我认为这个问题应该这样结束,但我讨厌看到新开发人员在这些类型的概念上苦苦挣扎。他们自己添加答案的原因是因为它不能用作评论,所以它变成了“扩展”评论。我也没有对语言细节以及为什么 OP 的尝试不起作用,所以它现在是开放的,如果有人扩展答案以包括它们;)
  • @TAsk 我真的需要从这么简单的问题中获得声誉吗? (无意冒犯任何人)
  • 一点也不 :) 我只是想知道在这种情况下添加答案作为社区 wiki 是否好。
  • @TAsk 有些人不喜欢回答这些类型的问题,因为他们没有看到其中的价值(即 OP 应该做更多的研究或调查或其他任何事情),所以我将它们发布为wiki。我的部分意图是减少可能尝试回答这些类型问题(代表)的其他人的数量,因为这会鼓励人们继续发布低质量的问题而不进行尽职调查。但同样,这只是我的意见。我从其他人对我面临的问题的回答中获得了很多价值,所以这是一个小小的回馈/向前支付;)
【解决方案2】:
public static void main(String[] args) throws Exception {
    Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            System.out.println("Caught Exception " + e);
        }
    });


    throw new Exception("a serious problem occured");
}

这是输出

Caught Exception java.lang.Exception: 出现严重问题

【讨论】:

    猜你喜欢
    • 2017-07-03
    • 1970-01-01
    • 2019-08-13
    • 2013-11-14
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2012-01-14
    相关资源
    最近更新 更多