Java是否在不使用try-and-catchblock的情况下自动处理异常?

Java是否在不使用try-and-catchblock的情况下自动处理异常?,java,exception,exception-handling,Java,Exception,Exception Handling,这段代码显示异常: Exception in thread "main" java.lang.ArithmeticException: / by zero at Ankit2.main(Ankit2.java:6) 为什么以及如何发生?不使用try-and-catch块 class ankit1 { public static void main(String args[]) { float a=20,b=120,c=50,sum;

这段代码显示异常:

Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Ankit2.main(Ankit2.java:6)
为什么以及如何发生?不使用try-and-catch块

class ankit1    
{
public static void main(String args[])    
 {
        float a=20,b=120,c=50,sum;    
        sum=(a+b+c)/0;    
        System.out.println("The average of three number is:"+sum);    
    }      

 }  

这是一个运行时异常

你不必申报或捕获这些


代码未捕获的任何异常(声明或未声明)都将使正在运行的线程崩溃。对于启动程序的主线程,JVM将在退出之前打印stacktrace。

像除以零这样的操作会引发未检查的异常。这就是为什么要编译代码
没有“尝试/捕捉”功能块就可以了。这并不意味着在运行时不会抛出异常。查找检查的异常和未检查的异常之间的差异。

如果在发生异常时,您只想使程序崩溃并打印堆栈跟踪,那么,是的,JVM正在做所有事情。但通常情况下,您希望以其他方式(更优雅地)处理它们。当异常终止线程(即,未被“捕获”和抑制)时,JVM会将异常和堆栈跟踪打印到控制台,如图所示。(因为这是唯一的前台线程,它也会终止JVM实例。)当然,由于异常,
println
行从未执行过。。因此,是的,JVM“处理”异常,但通常不是以期望的方式。