【发布时间】:2016-05-28 07:13:25
【问题描述】:
比如说,我想在我当前的包中的任何地方防止除以 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 应该防止在这个包中的任何地方除以 3,而无需我在 main() 中明确声明 throw 语句。换句话说,JVM通过在遇到这种情况时自动抛出异常来防止除以零的方式,我希望我的程序在包内遇到除以3的情况时也这样做。
这可能吗?如果不是,请详细说明原因。这将有助于理清我的概念。
【问题讨论】:
-
您是说希望它的行为就像您尝试除以 0 时一样?
-
当然,这很简单。只需将源代码编辑到 JVM 本身,然后构建您自己的版本。然后你可以让它做任何你想做的事情。 --- 我说“容易”吗?是的,也许不是。
-
Scala 的类似问题,使用 implicit 方法甚至不可能 - stackoverflow.com/questions/4443783/…
-
@Gendarme 是的,但只在当前包中说,而不是在它之外
标签: java exception runtimeexception