精华内容
下载资源
问答
  • 问题 :try里面return a , catch里面return b , finally里面return c ,最后结果怎么样? 猜测:在java 中 finally代码一定会执行 ,但是fun()方法只能返回一个变量 ,于是猜测最终执行finally中的return 语句。 ...

    问题 :try里面return a , catch里面return b , finally里面return c ,最后结果怎么样?

    猜测:在java 中 finally代码一定会执行 ,但是fun()方法只能返回一个变量 ,于是猜测最终执行finally中的return 语句。

    测试代码1:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    public class demo {
        public static void main(String[] args) {
            int number = 1 ;
            int fun = fun(number);
            System.out.println(fun);
        }
        public static int fun(int number){
            try {
                return 1/0;
            }
            catch (ArithmeticException e){
                number = 2;
                return number;
            }
            finally {
                number = 3;
                return number;
            }
        }
    }
    输出结果:
    3
    

    上述代码貌似满足猜测结论
    但是若把代码换成:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    public class demo {
        public static void main(String[] args) {
            int number = 1 ;
            int fun = fun(number);
            System.out.println(fun);
        }
        public static int fun(int number){
            try {
                return 1/0;
            }
            catch (ArithmeticException e){
                //number = 2;
                return number;
            }
            finally {
                //number = 3;
                return number++;
            }
        }
    }
    输出结果:
    1
    

    上述代码中的finally代码块 编译器一直提示:

    “finally”块不能正常完成。


    “return”在“finally”块内被阻止。


    从未使用在’number ++’处更改的值

    找到原因:return number++ 等效于 int x = number++; return x; 因此编译器提示’number++’未使用。因此测试代码2 依旧符合猜测。


    查找资料可以做出以下总结:
    可以参考http://www.2cto.com/kf/201010/76754.html这篇文章,也可以参考《深入Java虚拟机:JVM高级特性与最佳实践》第6章中对属性表集合的讲解部分。

    对于含有return语句的情况,这里我们可以简单地总结如下:

    try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种情况:
    
    情况一:如果finally中有return语句,则会将try中的return语句”覆盖“掉,直接执行finally中的return语句,得到返回值,这样便无法得到try之前保留好的返回值。
    
    情况二:如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。
    
    情况三:如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况,:
    
        1)如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。
    
        2)如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。

    ————————————————
    参考链接:https://blog.csdn.net/ns_code/article/details/17485221

    谢谢你请我吃糖果

    支付宝
    微信
    展开全文
  • 1 2 ... 6 if(e.getMessage().contains("123456798")) //使用e.getMessage().contains("")表示你获取的报错信息包含哪些内容就进行if操作 7 { 8 9 } 10 else{ 11 e.printStackTrac...
     1   
     2 
     3 try{
     4 
     5 }catch(Exception e){
     6 if(e.getMessage().contains("123456798")) //使用e.getMessage().contains("")表示你获取的报错信息中包含哪些内容就进行if操作
     7 {
     8 
     9 }
    10 else{
    11 e.printStackTrace();//否则直接输出异常信息
    12 }
    13 }

     

    转载于:https://www.cnblogs.com/zzzzw/p/4945922.html

    展开全文
  • 为什么我把connect()方法加入button1事件就会黑屏 代码如下 客户端: package sunxu.util; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt...
  • //获取对应sbip集合,第一次获取时为空 if(mapDkinfos == null){//这里如果不进行为空判断,会报空指针异常 mapDkinfos = new ArrayList(); } mapDkinfos.add(dkinfo);//将新添加对象加入到对应...
  • 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前...

    数据库连接池中关闭连接其实就是把连接归还给数据库连接池当中
    1、不管是否出现异常,finally块中代码都会执行;
    2、当try和catch中有return时,finally仍然会执行;
    3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
    4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
    代码片段:

     public String CreatOrder(Cart cart, Integer userId) {
            Connection conn=null;
            String orderId=null;
            try {
                conn= DButil.getConnection();
    
            //每次生成一个订单就会同时生成一个商品项同一个id
    
            //订单号是唯一的:时间戳+userId
            orderId=System.currentTimeMillis()+""+userId;
            //生成一个订单对象
            Order order =new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);
            //订单保存在数据库中
            orderDao.saveOrder(conn,order);
    
            //遍历购物车中每一个商品项转化为订单项
            for (Map.Entry<Integer, CartItem>entry: cart.getItems().entrySet()){
    
                CartItem cartItem =entry.getValue();//拿到每一个商品项
                OrderItem orderItem =new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);
                orderItemDao.saveOrderItem(conn,orderItem);
    
              Book book = bookDao.queryBookById(conn,cartItem.getId());
              book.setSales(book.getSales()+cartItem.getCount());
              book.setStock(book.getStock()-cartItem.getCount());
              bookDao.updateBook(conn,book);
            }
            cart.clear();
            return orderId;
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
            //此时关闭连接,
                DButil.close(conn,null);
            }
            return orderId;
        }
    
    展开全文
  • Log.e("APP.TAG","异常",e); } } @Override public void surfaceCreated(SurfaceHolder holder) { config.setContext(context); config.setSpeed(4); config.setGameViewses(gameImages); } @...
  • //获取HttpServletRequest对象 HttpServletRequest request = (HttpServletRequest)(mc.get(MessageContext.SERVLET_REQUEST)); logger.debug("request::::"+request.toString()); //记录时间 Date ...
  • // 1.创建一个SessionFactory对象 SessionFactory ...我就是想问如果不在映射文件中设置class标签中的lazy属性为false怎么才能消除异常 设置为lazy=false之后那load和get方法不是一样了吗?都变成了立即搜索
  • 这样返回hospitalization这个对象无法获取patient这个属性,报no session异常: [code="java"] 2010-03-24 10:40:22,343 [main] ERROR org.hibernate.LazyInitializationException:19 - could not initialize ...
  • log.info("获取消息异常"); return; } JSONObject json = JSONObject.parseObject(message); String uniqueCode = json.getString("uniqueCode"); String operateCode = json.getString(...
  • 我有一个进货表,相同产品可以进货多次,即可以有多条...通过findRequireByIN_NumID()返回一个单个对象,但当进货表有多条记录时就出错了,因为它返回对象不是唯一怎么样可以使它选择其中一条记录信息呢?
  • # 异常详情: DOM4j解析XML文件是出了异常异常是:Exception in thread "main" java.lang.IllegalArgumentException: Adding text to an XML document must not be null at org.dom4j.DocumentFactory.createText...
  • 以下代码片段是从摄像头中获取视频帧,但是里面使用到了AutoFitTextureView,这样话就需要预览才可以获取视频帧。但是机器人识别不需要,这样要怎么处理呢? ```java // 创建捕获图片session private ...
  • swift_异常处理

    2017-08-13 11:11:02
    在使用swift时候可能会出现异常,对...这里说明一下载swift中怎么使用,通常有三种,这里只说一下最常见一种。func Try_Catch(){ // 1 获取资源 guard let path = (Bundle.main).path(forResource: "Info", of

    在使用swift的时候可能会出现异常,对异常的接触比swift要早,在学java的时候就使用过了。现在swift中也出现。这里说明一下载swift中怎么使用,通常有三种,这里只说一下最常见的一种。

    func Try_Catch(){
            // 1 获取资源
            guard let path = (Bundle.main).path(forResource: "Info", ofType: ".plist") else{
                return
            }
            print("-----\(path)")
    
            // 2 获取Data
            // 异常处理
            // 系统帮助我们处理异常,如果该方法出现了异常,则该方法则返回nil。反之返回对应的对象
            guard  let jsonData =  try? (Data(contentsOf: URL(fileURLWithPath: (path))))else {
                return
            }
            print("--------\(jsonData)")
    
            // 解析Data
            guard let anyObject = try? (JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)) else {
                return
            }
    
            print("------\(anyObject)")
        }
    
    展开全文
  • 我用过ajax,jquery,提交请求可以,但是返回值获取不到,提示跨域请求问题。直接放弃,因为我是接口请求。 index.jsp *" %> ;charset=utf-8" %> *"%> String path = request.getContextPath(); String basePath ...
  • <pre name="code" class="properties"><pre name="code" class="java">public class TimerUpdate extends TimerTask...我怎么知道是第几行抛出的异常呢? 2.请大家指导下怎么在生成的错误日志显示哪行报的错误信息</p>
  • 我使用struts2上传文件时,Action类中的File对象获取不了jsp中上传的文件,调试过后发现file为空。 以下是我写的代码 fileupload.jsp ``` *" pageEncoding="utf-8"%> String path = request.getContextPath()...
  • 我在web-inf目录下有一个info.txt配置文件,把web程序打成war包放在weblogic服务器,在访问却不能找到这个目录? info.txt如下:/login.do=com.ouruan.mvctemplate.service.LoginService public class ...
  • 获取异常,结果发现没有获取到,今天有时间,研究了一下,发现是从响应获取的对象中获取的,下面我把自己写URLConnection和HttpClient网络请求响应码实体共享给大家,希望对大家有帮助! package ...
  • 有两个异常A和B,都是继承自Exception,在代码捕获到A,底层抛的时候是封装成B往外抛的,当然还有一部分是B自己的异常,所以catch的时候只能捕获到B,但是我想判断到底是A还是B抛的,我怎么判断?那个Throwable里...
  • //当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 cpds.setAcquireIncrement(acquireIncrement); //每60秒检查所有连接池中的空闲连接。Default: 0 cpds.setIdleConnectionTestPeriod...
  • struts.xml: <interceptors> ...我明白你的意思,并且这样可以跳转到指定的错误页面,但我想请教一下,怎么能在错误页面获取拦截器里的异常提示信息。多谢!
  • 这是我代码,我就想XMLCDATAQueryReason内容,生成新XML,可是怎么都搞不赢,大神棒棒我啊。 public class XMLTest { public static void main(String args[]) throws DocumentException { XMLTest ...
  • 其中wsdl中的这部分的name应该是args,并且应该是6个,这块怎么改: 这是测试类,不是我写的,所以也不知道是什么意思: public static void main(String[] args) { ReadDataBaseStub ms = null; try ...
  • 最近在写一个javaee项目,用到了多个servlet,发现这样很麻烦,然后模仿网上代码,写了一个通用servlet类--Baseservlet类并打包成jar包然后导入到类,但是在运行时发生了错误,代码如下: Baseservlet类: ...
  • 减库存业务 为防止超卖,怎么做? 可以使用synchronized加锁 ...使用try catch finally ,在finally删掉key 中途宕机话锁就不会被释放,中途宕机怎么办? 解决方案可以是加锁时,给key设置过期时间。 如

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

怎么获取trycatch中的异常