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“处理”异常,但通常不是以期望的方式。