sorry for bad English.
Obviously, division by zero is always undefined. So why that is an exception at run time? Why that is not a compile error ? conclusion of division by zero not changed at run time. It is different from something like file not found exception which that will be determined after execution.
System.out.println(1/0);
Another example :
Person firstPerson = (Person) new Object();
compiler permit parent to child cast,but it throws exception at runtime.