Method.invoke捕获异常的问题

zhangshi 2006-01-11 11:04:18
invoke调用方法抛出异常后,外部获取异常的message为何变为null了??如何可以获取方法抛出的异常信息
try{
Method.invoke(BO,VO);
}catch(Exception e) {
System.out.println(e.getMessage());//此处输出为空
}
...全文
673 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshi 2006-01-12
  • 打赏
  • 举报
回复
多谢楼上的各位,问题已经解决了
try{
Method.invoke(BO,VO);
}catch(InvocationTargetException e) {
System.out.println(e.getMessage());//此处输出为空
System.out.println(e.getCause());//此处输出为"程序错误"
throw new Exception(e.getCause());
}

Method.invoke()方法将程序异常终止转化为InvocationTargetException,并将错误信息存放在 e.getCause(),这样可以在外部调用中捕获异常信息抛出

kingofhawks 2006-01-11
  • 打赏
  • 举报
回复
同上。
dlxu 2006-01-11
  • 打赏
  • 举报
回复
输出异常的Stack一般都用e.printStackTrace();的
King_Style 2006-01-11
  • 打赏
  • 举报
回复
因为抛出的是NullPointerException异常
试试e.printStackTrace();看看
ChDw 2006-01-11
  • 打赏
  • 举报
回复
try{
Method.invoke(BO,VO);
}catch(InvocationTargetException e) {
System.out.println(e.getMessage());//此处输出为空
throw e.getCause();
}
yuzl32 2006-01-11
  • 打赏
  • 举报
回复
To 楼主

给的信息太少了啊,以下只是对你程序的猜测.

如果异常已经被内部捕获,换句话说,你的这Method.invoke(BO,VO);语句根本就没有抛出异常,那么System.out.println(e.getMessage());自然就没有输出
King_Style 2006-01-11
  • 打赏
  • 举报
回复
控制台输出怎样的?贴出来
zhangshi 2006-01-11
  • 打赏
  • 举报
回复
另外 e.printStackTrace()输出也是null
zhangshi 2006-01-11
  • 打赏
  • 举报
回复
我在调用方法BO内部已经throw new Exception("程序错误"); 但在外部捕获异常时输出的getMessage()方法是null而不是“程序异常”,这是为什么??
gzhua99 2006-01-11
  • 打赏
  • 举报
回复
Exception 的public String getMessage()

Returns:
the detail message string of this Throwable instance (which may be null).

注意是Throwable instance。
你可以再次抛出异常,同时指定message.

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧