- 浏览: 307556 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (195)
- 心情随想 (20)
- java基础 (30)
- 技术文章 (4)
- 在oracle的海洋中遨游 (25)
- unix (5)
- 没有意义 (6)
- 效率 (1)
- js (5)
- hibernate (2)
- jfreechart (3)
- 分析 (1)
- DW (2)
- on-line analytical processing (1)
- 人工智能理论 (10)
- weblogic (4)
- 我也cvs (0)
- TAM SSO 应用改造 (2)
- LADP (2)
- servlet (1)
- java 编码 (3)
- 智科 语录 (2)
- java 工作流 (1)
- swt (1)
- java pattern (1)
- xml和html基础 (19)
- c# (3)
- eclipse (1)
- db2 (4)
- 面试题 (0)
- english (2)
- Ruby (1)
- OLAP (3)
- 网友的智慧 (1)
- SOA (1)
- 搜索引擎 (4)
- 构建自己的报表工具 (1)
- JMX (1)
- 朝花朝拾 之少年记忆 (3)
- C语言 (2)
- struts2 (4)
- 元数据 数据仓库 (1)
- liferay (1)
- 分析工具 (0)
最新评论
-
yy8093:
只能在JDK1.4下监控WebLogic Server 8.x ...
weblogic JMX 中遇到的问题 -
di1984HIT:
问题找到了,就是1.4和1.5不兼容导致的,通过分析Objec ...
weblogic JMX 中遇到的问题_2 -
hillhill:
getServletContext().getRealPath ...
request.getRealPath("/") AIX不同与windows -
mrgood:
哥错了,这问题太傻逼了 一时没看出来
登录验证 struts2 -
mrgood:
LoginAction.java里面 if(getUserna ...
登录验证 struts2
特别关注一下 RuntimeException
检查性异常 checked
java.io.FileInputStream类的read()方法抛出IoException,方法无法履行它的职责
非检查型异常non-checked 运行时异常runtimeException
类的误用 String.chartAt StringIndexOutBoundsException
SUN公司并不打算强制客户程序员每次调用charAt(int index)时都检查index参数的合法性。
上面刚刚讨论了一下 Error 类型的异常处理情况, Java 程序员一般无须关注它(处理这种异常)。另外,其实在 Exception 类型的异常对象中,也存在一种比较特别的“异常”类型,那就是 RuntimeException ,虽然它是直接从 Exception 派生而来,但是 Java 编译器( javac )对 RuntimeException 却是特殊待遇,而且是照顾有加。不信,看看下面的两个示例吧!代码如下:
// 示例程序 1
// 它不能编译通过,我们可以理解
import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { // 注意这条语句 throw new Exception(" 故意抛出一个 Exception"); } }
// 示例程序 2
// 可它却为什么能够编译通过呢?
import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { // 注意这条语句 throw new RuntimeException(" 故意抛出一个 RuntimeException"); } }
对上面两个相当类似的程序, javac 编译时却遭遇了两种截然不同的处理,按理说,第 2 个示例程序也应该像第 1 个示例程序那样,编译时报错!但是 javac 编译它时,却例外地让它通过它,而且在运行时, java 虚拟机也捕获到了这个异常,并且会在 console 打印出详细的异常信息。运行结果如下:
java.lang.RuntimeException: 故意抛出一个 RuntimeException
at Trans.test(Trans.java:13)
at Trans.main(Trans.java:8)
Exception in thread "main"
为什么对于 RuntimeException 类型的异常(以及从它派生而出的异常类型), javac 和 java 虚拟机都特殊处理呢?要知道,这可是与“ Java 异常处理模型更严谨和更安全”的设计原则相抵触的呀!究竟是为何呢?这简直让人不法理解呀!
只不过, Java 语言中, RuntimeException 被统一纳入到了 Java 语言和 JDK 的规范之中。请看如下代码,来验证一下我们的理解!
import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { int i = 4; int j = 0; // 运行时,这里将触发了一个 ArithmeticException // ArithmeticException 从 RuntimeException 派生而来 System.out.println("i / j = " + i / j); } }
运行结果如下:
java.lang.ArithmeticException: / by zero
at Trans.test(Trans.java:16)
at Trans.main(Trans.java:8)
Exception in thread "main"
又如下面的例子,也会产生一个 RuntimeException ,代码如下:
import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { String str = null; // 运行时,这里将触发了一个 NullPointerException // NullPointerException 从 RuntimeException 派生而来 str.compareTo("abc"); } }
所以,针对 RuntimeException 类型的异常, javac 是无法通过编译时的静态语法检测来判断到底哪些函数(或哪些区域的代码)可能抛出这类异常(这完全取决于运行时状态,或者说运行态所决定的)理解为non_checked可以?,也正因为如此, Java 异常处理模型中的“ must be caught or declared to be thrown ”规则也不适用于 RuntimeException (所以才有前面所提到过的奇怪编译现象,这也属于特殊规则吧)。但是, Java 虚拟机却需要有效地捕获并处理此类异常。当然, RuntimeException 也可以被程序员显式地抛出,而且为了程序的可靠性,对一些可能出现“运行时异常( RuntimeException )”的代码区域,程序员最好能够及时地处理这些意外的异常,也即通过 catch(RuntimeExcetion) 或 catch(Exception) 来捕获它们。如下面的示例程序,代码如下:
import java.io.*; public class Trans { public static void main(String[] args) { try { test(); } // 在上层的调用函数中,最好捕获所有的 Exception 异常! catch(Exception e) { System.out.println("go here!"); e.printStackTrace(); } } // 这里最好显式地声明一下,表明该函数可能抛出 RuntimeException static void test() throws RuntimeException { String str = null; // 运行时,这里将触发了一个 NullPointerException // NullPointerException 从 RuntimeException 派生而来 str.compareTo("abc"); } }
评论
public class MyException1 extends Exception{ int num; MyException1(int a) { num=a; } [color=red] public String toString() { return num+"<10!值必须大于10"; }[/color]}
public class MyException2 extends Exception{ int num; MyException2(int a) { num=a; } public String toString() { return num+">100值必须小于100"; } }
public class MyExceptionTest { /** * @param args */ static void makeException(int a)throws MyException1,MyException2 { if(a<10) throw new MyException1(a); if(a>100) throw new MyException2(a); System.out.println("No Exception"); } public static void main(String[] args) { // TODO 自动生成方法存根 int a; try { //makeException(6); makeException(600); } catch (MyException1 e) { [color=red] System.out.println(""+e);[/color] } catch(MyException2 e) { System.out.println(""+e); } } }
发表评论
-
BufferedInputStream 测试
2009-04-20 16:37 1629在读取arff文件的时候,有点是需要注意到的。在J ... -
获取Java程序运行的路径
2009-04-20 13:04 9568关键字: jar war 运行路径 对于Java程序,无论是 ... -
数字的正则表达式
2009-03-21 17:12 1446(\d{3}-|\d{4}-)?(\d{8}|\d{7})? ... -
jsp相关
2009-01-20 14:25 982<% response.setHeader(" ... -
java 对文本的写和读
2008-09-04 21:31 856-----------写操作 File file=n ... -
byte,char int 之间关系即转换
2008-06-23 16:49 2771曾经遇到一个问题 char word='a',转换成'b'的问 ... -
使用DatabaseMetaDate获取数据库信息
2008-06-06 08:00 1371import java.sql.*; public class ... -
ant 的学习点滴
2008-06-03 08:31 1146一环境 1:ANT的项目的地址为 http://ant.a ... -
throws 和 try catch 的区别
2008-05-29 11:37 1356/** * 获取查询的result * @param ... -
Utf-8编码是如何工作的 (转改)
2008-05-26 11:18 1776关键字: 编码 Utf-8编码是如何工作的讲起。 (JVM规范 ... -
jdom和gnujaxp冲突的解决
2008-05-20 21:37 1331在网上看有: java.net.MalformedURLExc ... -
java 中的增量操作
2008-05-14 08:11 912public class Increment { /** ... -
JMX 基础及实例
2008-05-07 10:25 1536JMX Java Management Extensions ... -
weblogic 下excel乱码问题的解决
2008-05-06 18:30 2282在web.xml中配置 <mime-mappin ... -
数据库连接操作java代码
2008-04-15 08:42 1621package com.digitalchina.sitech ... -
小例子来证明String不同于StringBuffer
2008-04-06 11:44 882String 和 ... -
java 初学者必须理解的六大问题(转载)
2008-03-28 18:11 799对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果 ... -
path
2008-02-23 11:44 984在j2ee开发的过程中经常要获取path的信息 java 如果 ... -
package
2008-02-20 15:06 856在执行class文件的时候,是要进行打包操作的 怎么packa ... -
连接与 连接池
2008-02-19 17:00 926我们可以维护一个进入的连接池,一定数量的 Connection ...
相关推荐
Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序...
ArcGIS Runtime SDK for Java 100.12.0 的...如需在生产环境中使用ArcGIS Runtime SDK for Java,请联系ESRI公司获得授权,现在也有国产替代产品GeoScne Runtime SDK for Java,可以联系易智瑞公司获得相关资源和授权。
主要介绍了Java 常见异常(Runtime Exception )详细介绍并相关资料,大家在开发Java 应用软件的时候经常会遇到各种异常这里帮大家整理了一部分,并解释如何解决,需要的朋友可以参考下
Java Runtime Environment-6.0.26.exe
JRE 1.4.2 JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JRE1.8.0(Java Runtime Environment)——Java运行环境32bit
JRE(Java Runtime Environment)——windows Java运行环境 64bit
Java Runtime Environment 1.6.0.7 (32-bit
Java SE Runtime Environment(运行时环境)包含了运行以 Java 编程语言编写的程序所必需的 Java 虚拟机、运行时类库和 Java 应用程序启动器。 Java 平台的安全性 一个由角色提供的安全信息的描述。适用于开发人员...
Java Runtime For MacOS X 10.7
onnx的java包,pom引入后可以试验java调用onnx文件进行cpu模型推理。 具体见https://github.com/microsoft/onnxruntime/blob/master/java/src/test/java/sample/ScoreMNIST.java 和 ...
java runtime environment 1.8.0_45 64bit.rar
标签:bytedeco、onnxruntime、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
Java SE Runtime Environment(运行时环境)包含了运行以 Java 编程语言编写的程序所必需的 Java 虚拟机、运行时类库和 Java 应用程序启动器。 Java 平台的安全性 一个由角色提供的安全信息的描述。适用于开发人员...
Java Runtime Environment,Java运行环境64位安装包,官网下载。 Java SE Runtime Environment 8 Downloads Do you want to run Java™ programs, or do you want to develop Java programs? If you want to run ...
Sun Java SE Runtime Environment(JRE)6
java runtime environment 1.8.0_45 64bit jre1.8.0_45 64bit jre-8u261
Java中使用Runtime和Process类运行外部程序
在arcgis开发者官网下载的rumtime 100.13.1开发包java版本,由于官网抽风经常上不去,我下载了上传造福大家