仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 634|回复: 10
打印 上一主题 下一主题

[学习教程] 来看技能:当不克不及抛出非常时

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:03:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
checked非常的一个成绩是,偶然候不同意抛出如许的非常。出格是,假如要掩盖超类中声明的办法,大概完成接口中声明的办法,而谁人办法没有声明任何checked非常,那末新的完成也不克不及声明checked非常。因而必需事后处置非常。别的,能够将非常转换为运转时非常,大概绕过它而不处置它。可是,应当如许做吗,这个中是不是埋没着毛病?
成绩
只需看一个例子,成绩就分明了。假定有一个File对象的List,必要按它们的尺度路径以字典按次排序。所谓尺度路径,是指在剖析别号、标记链接和/../及/./以后失掉的完全相对路径。当地办法利用一个对照器,如清单1所示:
清单1.按尺度路径对照两个文件
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class FileComparator implements Comparator<File> {

  public int compare(File f1, File f2) {
    return f1.getCanonicalPath().compareTo(f2.getCanonicalPath());
  }

  public static void main(String[] args) {
   ArrayList<File> files = new ArrayList<File>();
   for (String arg : args) {
     files.add(new File(arg));
   }
   Collections.sort(files, new FileComparator());
   for (File f : files) {
     System.out.println(f);
   }
  }

}
不幸的是,该代码不克不及经由过程编译。成绩在于,getCanonicalPath()办法抛出一个IOException,由于它必要会见文件体系。一般,当利用checked非常时,可使用以下两种办法之一:
将堕落的代码包装在一个try块中,并捕获抛出的非常。
声明包装办法(本例为compare())也抛出IOException。
一般,至于选择何种办法,取决因而否能在抛出非常时公道地处置非常。假如能,那末利用try-catch块。假如不克不及,那末声明包装办法自己抛出非常。不幸的是,这两种技能关于本例都不论用。
在compare()办法中没法公道地处置IOException。从手艺上讲,仿佛能够做到—即前往0、1或-1,如清单2所示:
<p>
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
兰色精灵 该用户已被删除
沙发
发表于 2015-1-20 08:49:01 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
admin 该用户已被删除
板凳
发表于 2015-1-24 15:20:45 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-27 05:17:13 | 只看该作者
是一种为 Internet发展的计算机语言
飘灵儿 该用户已被删除
5#
发表于 2015-1-27 09:39:00 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-5 04:21:00 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
若相依 该用户已被删除
7#
发表于 2015-2-11 04:14:06 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
分手快乐 该用户已被删除
8#
发表于 2015-3-1 21:02:39 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
莫相离 该用户已被删除
9#
发表于 2015-3-10 23:42:52 | 只看该作者
是一种为 Internet发展的计算机语言
柔情似水 该用户已被删除
10#
发表于 2015-3-17 16:08:53 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
变相怪杰 该用户已被删除
11#
发表于 2015-3-24 10:44:41 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表