当前位置: 首页 > news >正文

餐饮管理系统哪个好/合肥seo整站优化

餐饮管理系统哪个好,合肥seo整站优化,企业手机网站程序是什么,京东自营商城官网问题描述反射调用方法时,方法内部抛出了自定义异常,但是无法在反射调用的时候捕获到抛出的自定义异常。代码如下:// 自定义异常public class MyException extends Exception {private static final long serialVersionUID -7998753885990231…

问题描述

反射调用方法时,方法内部抛出了自定义异常,但是无法在反射调用的时候捕获到抛出的自定义异常。

代码如下:

// 自定义异常

public class MyException extends Exception {

private static final long serialVersionUID = -7998753885990231365L;

private String code;

public MyException(String code, String message) {

super(message);

this.code = code;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

}

// 反射调用的方法

public class MethodThrowMyException {

public String throwMyException() throws MyException {

throw new MyException("1", "自定义异常");

}

}

// 捕获异常

public class Invocation {

public static void main(String[] args) {

try {

Class> c = Class.forName("myexception.MethodThrowMyException");

Object o = c.newInstance();

Method m = c.getMethod("throwMyException");

m.invoke(o);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}catch(MyException e) {

}

}

}

这里会报错,Unreachable catch block for MyException. This exception is never thrown from the try statement body

问题解决

参考文章

可以发现,JDK的API文档中,关于method.invoke的注释说明

InvocationTargetException是用来处理内部方法抛出异常的

f60a19ceb9bf?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图1

继续看InvocationTargetException的说明

InvocationTargetException是一个受检查的异常,包含了由调用方法或构造函数引发的异常

f60a19ceb9bf?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图2

InvocationTargetException有两个方法可以获取方法内部抛出的异常

f60a19ceb9bf?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图3

因此修改捕获的方法

public class Invocation {

public static void main(String[] args) {

try {

Class> c = Class.forName("myexception.MethodThrowMyException");

Object o = c.newInstance();

Method m = c.getMethod("throwMyException");

m.invoke(o);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

// 方式一

Throwable targetException = e.getTargetException();

if(targetException instanceof MyException) {

System.out.println("捕获到自定义异常");

System.out.println("code:" + ((MyException) targetException).getCode());

System.out.println("message:" + targetException.getMessage());

}

// 方式二

Throwable cause = e.getCause();

if (cause instanceof MyException) {

System.out.println("捕获到自定义异常");

System.out.println("code:" + ((MyException) cause).getCode());

System.out.println("message:" + cause.getMessage());

}

}

}

}

得到结果:

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at myexception.Invocation.main(Invocation.java:12)

Caused by: myexception.MyException: 自定义异常

at myexception.MethodThrowMyException.throwMyException(MethodThrowMyException.java:5)

... 5 more

捕获到自定义异常

code:1

message:自定义异常

可以看到方式一和方式二是一样的,那么getTargetException和getCause有什么区别呢

再次看到文档,这里指出getCause()是首选的方法,因此使用方式二就行了

f60a19ceb9bf?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图4

http://www.jmfq.cn/news/5118067.html

相关文章:

  • 柳州网站建设公司哪家好/3天网站seo优化成为超级品牌
  • 网站栏目类别是什么意思/西安seo王
  • 网站设计与网页制作毕业论文/宁波网站制作优化服务
  • 最低价网站建设/建网站教学
  • 无锡网站建设 app/seo外链软件
  • 乡土文化网站怎么做/seo工具优化软件
  • 织梦动漫网站模版/百度个人中心登录
  • 团购网站怎么运营/电商运营自学全套教程
  • 莘县住房建设局 委 网站/网站权重是怎么提升的
  • 如何用java做c s的网站/东莞优化怎么做seo
  • 怎么看一家网站是谁做的/网站免费下载安装
  • seo工具是什么/泰安seo推广
  • 怎么创建手机网站/seo优化专员
  • b2c网站类型/网络推广网站建设
  • 专业做小程序开发的公司/seo优化网站技术排名百度推广
  • 免费word文档模板下载网站/营销软文500字
  • 汕头公众号开发公司/成都企业网站seo技术
  • 彩票网站怎么做/宁波网站推广代运营
  • 比较好的建站系统/seo搜索
  • 做网站不错的公司/淘宝直通车推广怎么做
  • 做网站如何让用户注册/谷歌商店paypal下载官网
  • 网站建设历史/百度搜索简洁版网址
  • 佛山移动网站设计公司/百度怎么推广自己的产品
  • 企业网站建设规划ppt/seo关键词优化报价价格
  • 设置网站解析/软文代写兼职
  • 网页设计与网站建设考试题/怎么在百度上免费做广告
  • 设置网络的网站/网络营销自学网站
  • 那些网站企业可以免费展示/论坛推广技巧
  • 用hbuilder做网站模块/营销渠道管理
  • 做外贸的都有哪些网站/国际新闻今日头条