说,我想防止当前软件包中任何地方除以3。通常的过程是制作一个Exception子类:
class NoDivbyThreeException extends RuntimeException {
public NoDivbyThreeException (String msg) {
super(msg);
}
}
然后将其扔到需要的地方:
class CustomExceptionDemo {
public static void main(String[] args) {
int numr = 5;
int denr = 3;
try {
if (denr==3) throw new NoDivbyThreeException("Div by 3 not allowed");
else System.out.println("Result: " + numr/denr);
}
catch (NoDivbyThreeException e) {
System.out.println(e);
}
}
}
但是我想要的是,JVM应该在没有明确声明main()内的throw语句的情况下,防止在该包内的任何地方除以3。换句话说,JVM通过在遇到这种情况时自动抛出异常来防止被零除的方式,我希望我的程序在程序包中遇到被3除的情况时也能做同样的事情。
这可能吗?如果没有,请说明原因。这将有助于清除我的概念。
如果Exception
没有显式地抛出它,则无法抛出它。除了某些内部Exceptions
(如被0除)外,它们由JVM处理。这些包括NullPointerException
(如果未由明确的throw语句抛出),被0除和其他一些错误。但是,这些异常实际上是通过从基础平台接收到错误而创建的。例如,如果被0除,则该错误已由CPU生成。
因此,除非您的代码以某种方式在基础平台中创建了错误,否则您必须自己创建错误。其他任何事情都将要求JVM具有高度可变性,由于行为不一致,这没有多大意义,这是不希望的,并且会导致极大的安全风险。举例说明为什么不希望使JVM变为可静音:
请考虑您的示例:
我们可以有三个选项来处理此问题(不存在,AFIAK):
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句