在没有"线程中的异常的情况下抛出异常......"

时间:2016-01-13 20:18:25

标签: java exception runtimeexception throwable

我想知道是否有一种简单的方法可以抛出异常,但具有我选择的确切字符串。我找到了摆脱堆栈跟踪的方法,但现在我想删除每个异常的开头:

"线程中的异常" main"的RuntimeException ..."

我正在寻找一种简单,优雅的方式(不是非常简单,但也不太复杂)。

谢谢!

7 个答案:

答案 0 :(得分:3)

正确的方法是设置自己的自定义uncaught exception handler:

public static void main(String... argv)
{
  Thread.setDefaultUncaughtExceptionHandler((t, e) -> System.err.println(e.getMessage()));
  throw new IllegalArgumentException("Goodbye, World!");
}

答案 1 :(得分:1)

只是做:

try {
    ...
} catch (Exception e) {
    System.err.print("what ever");
    System.exit(1); // close the program
}

答案 2 :(得分:0)

您就是这样做的:

try{
   //your code
 }catch(Exception e){
   System.out.println("Whatever you want to print" + e.getMessage());
   System.exit(0);
 } 

答案 3 :(得分:0)

构造异常对象时,其中一个构造函数将获取消息的String对象。

答案 4 :(得分:0)

除非你获得openJDK,否则你可以更改源代码并重新编译。

但是,大多数开发人员通常会根据日志记录设置使用一些日志库(如log4j)并使用不同的详细级别。

因此,您可以使用较低级别(如TRACE或DEBUG)打印完整堆栈跟踪,并在ERROR或WARN(甚至INFO)级别中使用更易读的消息。

答案 5 :(得分:0)

我不确定我完全理解你的问题,但如果你只是添加"抛出异常"到方法头并在应该失败的方法中抛出异常,这应该可行。

示例:

public void HelloWorld throws Exception{
    if(//condition that causes failure)
        throw new Exception("Custom Error Message");
    else{
        //other stuff...
    }
}

答案 6 :(得分:0)

您可以通过创建自己创建的自定义Exception来完成此操作。

  • 这些异常可以是Checked异常,由Java编译器强制执行(需要try / catch或throws来实现)
  • 或者异常可以是Unchecked异常,它在运行时抛出,不是Java编译器强制执行的。

根据您编写的内容,您似乎需要一个未强制执行的Unchecked异常,但在运行时会抛出错误。

这样做的一种方法是通过以下方式:

public class CustomException extends RuntimeException {
       CustomException() {
              super("Runtime exception: problem is..."); // Throws this error message if no message was specified.
       }

       CustomException(String errorMessage) {
            super(errorMessage); // Write your own error message using throw new CustomException("There was a problem. This is a custom error message"); 
       }
}

然后在您的代码中,您可以执行以下操作:

public class Example {
    String name = "x";
    if(name.equals("x"))
          throw new CustomException();   // refers to CustomException()
}

或者

 public class Example2 {
        String name = "y";
        if(name.equals("y")) 
             throw new CustomException("Error. Your name should not be this letter/word."); // Refers to CustomException(String errorMessage);
 }

您也可以为Throwable执行此操作。