有人能告诉我关于这件事的信息吗。我实在受不了这种异常的类型。
谢谢
public class ValidationException extends Exception{
public ValidationException(){
super("There was a problem when validating data");
}
public ValidationException(String message){
super(message);
}
public ValidationException(String message, Throwable throwable){
super(message, throwable);
}
public ValidationException(Throwable throwable){
super(throwable);
}
}发布于 2015-11-14 00:34:57
异常与RuntimeException的主要区别在于,我们需要将异常包装在try/catch块中。RuntimeException不需要被捕获,但它和例外一样致命。
public class Main{
public static void main(String[] args) {
Thread.currentThread().setUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException(Thread t, Throwable e){
System.out.println("Uncaught Exception " + e);
}
});
try{
throwException();
}catch(Exception e){
System.out.println("Caught Exception " + e);
}
try{
throwRuntimeException();
}catch(Exception e){
System.out.println("Caught RuntimeException " + e);
}
//unchecked, no need to wrap int try/catch
throwRuntimeException();
}
public static void throwException() throws Exception {
throw new Exception();
}
public static void throwRuntimeException() {
throw new RuntimeException();
}
}以上面的例子为例。产出如下:
捕获异常java.lang.Exception 抓到RuntimeException java.lang.RuntimeException 未异常java.lang.RuntimeException
如您所知,对throwRuntimeException()的调用将被抛出,并且由于没有try/catch块,所以它不知道如何处理它。这会使线程崩溃,并且由于有一个UncaughtExceptionHandler,所以它会被调用。
此外,还有一些错误,我不想讨论,因为除了JVM抛出的错误之外,我对它不太了解。OutOfMemoryError就是一个例子。
https://stackoverflow.com/questions/33703560
复制相似问题