精华内容
下载资源
问答
  • 所以想问一下,有没有办法可以不用自己抛出。 **比如这个不用自己抛出也能捕获到异常:** * try * { * char* p = new char[0x7fffffff]; //抛出异常 能够自己抛出异常 * } * catch (exception &e) ...
  • 最近在项目中看到有人在打开文件中没有关闭文件对象,但程序依然...仔细阅读代码发现,发现特别之处在于,打开流但操作的位置特殊:try (FileOutputStream fop = new FileOutputStream(filePath)){ //code }catch...

    最近在项目中看到有人在打开文件中没有关闭文件对象,但程序依然正常运行。这就挑战认知了,正常来说,打开文件必须要关闭问天,打开连接,就需要关闭连接。这种只打开,不关闭,程序正常运行,什么鬼。仔细阅读代码发现,发现特别之处在于,打开流但操作的位置特殊:

    try (FileOutputStream fop = new FileOutputStream(filePath)){   //code }catch (Exception e){   logger.error("file error",e)}
    41d87c70aaecf39d54c3d113e848bdd9.png

    代码中没有关闭输出流的操作,通过搜索发现以上是Java 7 以来的新特性:TWR(Try-with-resources),可以省去手动关闭资源的操作,同时减少代码量,优雅地写代码。在处理IO的代码中,我们会使用大量的try...catch()...finally...语法,其中会在finally进行IO的close操作, 写过python的都知道,这种操作可以使用try-with-resources操作,幸运的是Java7也有了此特性。以前IO操作中可能的写法是:

    try {   File file = new File(filePagth);   FileOutputStream fop = new FileOutputStream(file)}catch (Exception e){   logger.error("file error",e)}finally{  try {    if (fop != null)      fop.close();  } catch (IOException closeInx) {  }}

    如果使用TWR语法,则可以简化为:

    try(FileOutputStream fop = new FileOutputStream(file)){   //code}catch (Exception e){   logger.error("file error",e)}

    如果是多个操作流,需要分开写

    try(FileOutputStream fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos)){    //code}catch (IOException ioe ){  logger.error("IO Error ",ioe);}

    原理:

    TWR特性是使用了java7的新的接口AutoCloseable,可以使用try-with-resources语法的资源必须实现该接口。而Closeable继承了AutoCloseable,因此我们常用的资源类都继承了Closeable接口。这样try语句结束时,资源就可以自动释放了

    虽然现在已经都到Java 13,但不同版本提供的新功能确实可以带来很多方便,还需要好好学习啊,这个新提供的方法,是不是使用起来很方便呢?

    展开全文
  • 最近在项目中看到有人在打开文件中没有关闭文件对象,但程序依然...仔细阅读代码发现,发现特别之处在于,打开流但操作的位置特殊:try (FileOutputStream fop = new FileOutputStream(filePath)){ //code }catch...

    最近在项目中看到有人在打开文件中没有关闭文件对象,但程序依然正常运行。这就挑战认知了,正常来说,打开文件必须要关闭问天,打开连接,就需要关闭连接。这种只打开,不关闭,程序正常运行,什么鬼。仔细阅读代码发现,发现特别之处在于,打开流但操作的位置特殊:

    try (FileOutputStream fop = new FileOutputStream(filePath)){   //code }catch (Exception e){   logger.error("file error",e)}
    bd4d2c4efc6cca451dd8211e820bd07a.png

    代码中没有关闭输出流的操作,通过搜索发现以上是Java 7 以来的新特性:TWR(Try-with-resources),可以省去手动关闭资源的操作,同时减少代码量,优雅地写代码。在处理IO的代码中,我们会使用大量的try...catch()...finally...语法,其中会在finally进行IO的close操作, 写过python的都知道,这种操作可以使用try-with-resources操作,幸运的是Java7也有了此特性。以前IO操作中可能的写法是:

    try {   File file = new File(filePagth);   FileOutputStream fop = new FileOutputStream(file)}catch (Exception e){   logger.error("file error",e)}finally{  try {    if (fop != null)      fop.close();  } catch (IOException closeInx) {  }}

    如果使用TWR语法,则可以简化为:

    try(FileOutputStream fop = new FileOutputStream(file)){   //code}catch (Exception e){   logger.error("file error",e)}

    如果是多个操作流,需要分开写

    try(FileOutputStream fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos)){    //code}catch (IOException ioe ){  logger.error("IO Error ",ioe);}

    原理:

    TWR特性是使用了java7的新的接口AutoCloseable,可以使用try-with-resources语法的资源必须实现该接口。而Closeable继承了AutoCloseable,因此我们常用的资源类都继承了Closeable接口。这样try语句结束时,资源就可以自动释放了

    虽然现在已经都到Java 13,但不同版本提供的新功能确实可以带来很多方便,还需要好好学习啊,这个新提供的方法,是不是使用起来很方便呢?

    展开全文
  • 因为如果我不用try catch语句块的话 我的编译就通不过 会提示我哪里出错了 我还可以去改。但是使用了try catch语句块后,编译通过了 可是运行时就出错了 。。 刚开始学习java 真心想不通了〒_〒
  • 可以看到<code>co.wrap返回了一个普通函数<code>createPromise,这个函数就是文章开头的<code>fn啦。 <pre><code> javascript var fn = this.experimental ? compose_es7(this.middleware) : co.wrap(compose...
  • try { System.out.println("\n"+Thread.currentThread().getName()+"靠边等..."); wait(); //如果使用该方法的线程传递的参数是20须等待 //Thread.sleep(1000); System.out.println("\n"+Thread.currentThread()...
  • 以下是我通过JNDI的方法实现的代码,可以正常运行,现在求不用JNDI的方法: public void runReportUsingSql() throws Exception { String jndiName ="fams_system"; String reportPath ="C:/MyDevelopTools/...
  • 笔者可以描述这样一个场景:有一天你上网完全可以不用IE 或者NETSCAPE,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过UO,也许你就知道那种感觉了,但是JAVA做成的东西一定会超过UO的,...
  • 假如子线程运行出错(空指针或者其他错误),整个app都会crash,在不用try-catch的前提下,怎样才能使得子线程出错而不导致整个app的crash,结果只是这个线程的任务无法完成,而APP不会Crash??** 
  • 一面 来自于比特论坛 1、自我介绍 ...11、try-catch-finally 的运行顺序?哪部分可以省略? 12、什么是索引?底层实现是什么?为什么不用红黑树? 13、什么是事务?平时用过吗?举个例子? 14、说几个你

    一面 来自于比特论坛
    1、自我介绍
    2、根据项目深问

    3、JVM 内存划分?
    4、垃圾回收算法有哪些?怎么判断对象可回收?
    5、反射了解吗?什么地方用到了反射?
    6、进程与线程的区别?
    7、接口和抽象类的区别
    8、Java 的多态怎么理解?
    9、error 和 exception 的关系和区别?
    10、常见的运行时异常有哪些?
    11、try-catch-finally 的运行顺序?哪部分可以省略?
    12、什么是索引?底层实现是什么?为什么不用红黑树?
    13、什么是事务?平时用过吗?举个例子?
    14、说几个你知道的非关系型数据库?redis 了解吗?和关系型数据库的区别?
    15、TCP 与 UDP 的区别?
    16、cookie 和 session 的区别?
    17、说几个你知道的状态码
    18、数据结构的排序算法有哪些?讲一下冒泡排序是如何实现的?
    19、知道哪些线性结构和非线性结构?
    20、linux 基础指令知道哪些?
    21、spring 是什么?AOP 呢?IOC?
    二面 来自于比特论坛
    1、讲实习方面的内容,对于测试的理解等
    2、说一下 ArrayList 和 LinkedList
    3、页面输入 url 后发生了什么
    4、session 和 cookie 的区别
    5、你知道 cookie 为什么会出现,我说的是可以存储数据
    6、线程和进程间通信
    7、socket 是线程还是进程
    8、post 和 put 的区别
    9、讲思路.反转链表
    10、多线程的实现,你项目中用的是哪种,为什么
    11、讲一下项目,难点
    12、你怎么学习一门语言

    13、你觉得在测试方面你比别人的优点
    14、Linux 内存管理
    15、查看磁盘空间的命令
    16、索引实现的数据结构,为什么是 B+树,B+树和 B 树的区别
    17、事务的隔离级别,会有什么问题
    18、你接触的测试工具有哪些
    一面 来自于比特论坛
    1、HashMap 底层.CHM 底层
    2、强引用.弱引用.虚引用等,ThreadLocal 可能导致的内存泄漏问题
    3、JVM 中的锁
    4、Lock 和 synchronized 的区别?
    5、除了锁,其他保障线程安全的方式?
    6、同步块外部执行 wait 和 notify 能达到效果吗?
    7、MyISAM 和 InnoDB 的区别?
    8、隔离级别
    9、间隙锁
    10、HBase 整体架构
    11、HBase 和 MySQL 区别,取代的可能性,场景等
    12、Redis HA 架构
    13、Hive order by 和 sort by 的执行区别?

    求职必备刷题官网:https://github.com/bennyrhys/interview
    【更多互联网公司笔试面试真题请关注“让我遇见相似的灵魂”公众号】

    展开全文
  • 异常机制

    2009-12-08 22:38:00
    C++,JAVA,PYTHON……总结一下,异常机制似乎是OOP语言的一个特性,JAVA与PYTHON中对使用异常处理的态度甚至是强制的。...噢,对,JAVA中强制需要try catch,否则编不过,但并非每个语言都那样) 我想,本质上

    C++,JAVA,PYTHON……总结一下,异常机制似乎是OOP语言的一个特性,JAVA与PYTHON中对使用异常处理的态度甚至是强制的。

     

    为什么一定要引进异常机制,而不用传统而简单的“检查返回值”机制,Google之,查书之,答曰:

     

    * 异常可以强制程序员进行错误处理。(可以吗?噢,对,JAVA中强制需要try catch,否则编不过,但并非每个语言都那样)

       我想,本质上,程序员进不进行错误处理,是语言无关的,语言再怎么强制,如果你懒得处理,总可以找到绕道的方法。

     

    * 异常机制可以简化出错时资源的回收。

     

    * C++的构造函数可以抛出异常,而且在函数栈中只有构造了的对象才会被自动析构。(我们可以采用“二次构造” + 返回值检查的方法来达应对

       初始化异常的情况,而且代码非常明了)

     

    * 检查返回值的错语处理方案是建立在约定上的,本身不属于语言层面

     

    * 异常处理的一个很大的目标是把异常处理代码从异常发生的地方移开,使你集中精力去解决你想解决的问题,然后再到另一个地方处理异常的问题。

     

    * 每次调用的时候都必须测试条件,并判断返回结果,这使得程序难以阅读,并且还可能会降低运行效率,因此程序员们都不愿意使用异常信号,也不愿意去处理异常了

     

    此外,C++中异常会增大程序的开销,对于这个问题,C++编程思想上解释道,只有出错的部分才走缓慢的异常处理栈跳转,正常代码是不会受到

    特别大的影响。当然,编译出来的程序体积是要大点,大多少呢?曰:“典型情况下5%-15%的空间开销”

     

     

    讨论此话题的意义在于,我是否有需要把经典的C++的错误处理模式改成"异常处理",或者只是从中借鉴一点

    展开全文
  • 如下方法,打印日志信息,想扩充些 [code="ruby"] public void info(String message) { ...请问不用log4j可以作到限制文件大小的功能吗? [b]问题补充:[/b] 另外补充点,我下面写的是java代码,不是ruby代码。
  • /// 整个压文件的文件名 不用带后缀 public static void ZipDownLoad(List zipEntity, string zipName) { MemoryStream ms = new MemoryStream(); using (ZipFile zip = new ZipFile(ms)) { zip....
  • jedis使用指南

    2015-07-13 18:10:32
    这里我进行了20w次连续操作(10w读,10w写),不用pipeline耗时:187242ms,用pipeline耗时:1188ms,可见使用管道后的性能上了一个台阶。看了代码了解到,管道通过一次性写入请求,然后一次性读取响应。也就是说...
  • 最后输出到图片的引用地址,是不是这样就可以了,不用写其他了吗? 4、而且当所有对象设置为空时,程序是没有结束的,最后还能运行下面的“试一试”的字眼,当程序结束时应该报空才对啊,为什么还在客户端看到...
  • 迫切性,大家都在说云计算时代来了,软件不用装了,海量信息可以存储到服务器上,走到哪里就在那里提取,但是你能保证你在服务器上的信息不泄露吗?怎么办?我的建议是,利用上面的加密思想进行加密,任何人想要暴利...
  • 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确...
  • java 面试题 总结

    2009-09-16 08:45:34
    抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...
  • 谁给指点一下为什么取不到值,或者怎么样可以post xml字符串 [b]问题补充:[/b] 能否讲具体一点 [b]问题补充:[/b] 1.我想直接Post整个xml 字符串过去. 然后服务端取xml中的参数,现在这样却取不到,我想知道为...
  • 感觉JVM可以在内部维护这个队列,不用释放出接口来. 当然尽管API上讲了" 大队列 用小池, 小队列 用大池," 可以提高资源利用率.然而现在还不是很理解.后面在实践中体会了. 嘿嘿 [b]问题补充:[/b] 先问再吃饭. :D...
  • 答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧. 6.ADO.net中常用的对象有哪些?分别描述一下。 答:connection command sqladapter dataset datatable ...
  • atomikosTransactionManager这个东西不用管,是一个开源的支持JTA分布式的JAR,希望有人能够为我解答........ [b]问题补充:[/b] 谢谢你的解答,但是我还是不明白你的意思,你是指我的Dao中用了内部类吗,你所指的 ...
  • 43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...
  • Java语言中忽视的细节

    2011-09-04 11:24:00
    那就只有不用instanceof运算符,而使用对象的getClass()方法来判断两个对象是否属于同一种类型,例如,将上面的equals()方法修改为:  public boolean equals(Object obj){  if(obj.getClass()==Student.class){ ...
  • SSO-WebDemo

    2013-08-12 20:25:57
    如果通过效验,用户就可以不用再次登录的情况下访问应用系统2和应用系统3了。 从上面的视图可以看出,要实现SSO,需要以下主要的功能: 所有应用系统共享一个身份认证系统。 统一的认证系统是SSO的前提之一。认证...
  • Spring.net框架

    2011-06-11 14:32:10
    经过改造后,SayHello不再依赖于具体的HelloGenerator,而是依赖于IHelloGenerator接口,如此一来,我们可以 动态的将EnHelloGenerator或是CnHelloGenerator赋给SayHello,其打印行为也随之发生改变。接口的定义以及...
  • XML对这一原理进行了深化和扩展,用XML,你可以描述你的信息在哪里,你可以通过meta来验证信息,执行搜索,强制显示,或者处理其他的数据。 下面是一些XML metadata在实际应用中的用途: 1.可以验证数字签名,使...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52.一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握...
  • 艺术大家通常是创造出自己的套路,比如明末清初,水墨画法开始成熟,这时画树就不用勾勒这个模式了,而是一笔 下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一个活生写意的树就画出来. 我上面这些描述其实...
  • 而且我发现客户端如果不用mina的API,直接用Socket API连接,服务器撑不到1000个,200多个就Connection refused了. <strong>问题补充</strong><br />刚才试验了一下,模拟1000个客户端连接,成功了931个,异常是: ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

try可以不用catch吗