我正在尝试抛出自定义异常
class NumberFormatException extends Exception
{
public NumberFormatException() {}
//Constructor that accepts a message
public NumberFormatException(String message)
{
super(message);
}
}
稍后,我使用
抛出此异常 throw new NumberFormatException("Exception found");
以后再使用
捕获它catch(NumberFormatException e)
{
System.out.println(e);
}
打印类似
的内容NumberFormatException: Exception found
是否可以打印如下内容:
java.lang.NumberFormatException: Exception found
约束是catch
代码无法修改,即
catch(NumberFormatException e)
{
System.out.println(e);
}
答案 0 :(得分:0)
您正在尝试获取异常类的规范名称,以下是获取它的方法:
catch(NumberFormatException e)
{
System.out.println(e.getClass().getCanonicalName());
}
请参阅javadoc了解更多信息:getCanonicalName
答案 1 :(得分:0)
在您的toString
课程中覆盖NumberFormatException
:
class MyException extends Exception{
String message;
public MyException(String string) {
this.message = string;
}
@Override
public String toString() {
String s = getClass().getCanonicalName();
String message = this.message;
return (message != null) ? (s + ": " + message) : s;
}
}
来源:Throwable
以下是测试该方法的完整代码:
package first;
class MyException extends Exception{
String message;
public MyException(String string) {
this.message = string;
}
@Override
public String toString() {
String s = getClass().getCanonicalName();
String message = this.message;
return (message != null) ? (s + ": " + message) : s;
}
}
public class TestingMyException{
public static void main(String[] args) {
try{
throw new MyException("This works !");
}catch(MyException e){
System.out.println(e);
}
}
}
<强>输出强>
first.MyException: This works !
由于我的类是在我的root名为first
的包中定义的,因此结果会打印first.MyException
。
因此,您还必须检查您的课程是否未在 默认包 中定义。否则,你除了:
之外什么也得不到MyException: This works !