- 浏览: 312874 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1648在读取arff文件的时候,有点是需要注意到的。在J ... -
获取Java程序运行的路径
2009-04-20 13:04 9596关键字: jar war 运行路径 对于Java程序,无论是 ... -
数字的正则表达式
2009-03-21 17:12 1471(\d{3}-|\d{4}-)?(\d{8}|\d{7})? ... -
jsp相关
2009-01-20 14:25 998<% response.setHeader(" ... -
java 对文本的写和读
2008-09-04 21:31 882-----------写操作 File file=n ... -
byte,char int 之间关系即转换
2008-06-23 16:49 2804曾经遇到一个问题 char word='a',转换成'b'的问 ... -
使用DatabaseMetaDate获取数据库信息
2008-06-06 08:00 1398import java.sql.*; public class ... -
ant 的学习点滴
2008-06-03 08:31 1184一环境 1:ANT的项目的地址为 http://ant.a ... -
throws 和 try catch 的区别
2008-05-29 11:37 1394/** * 获取查询的result * @param ... -
Utf-8编码是如何工作的 (转改)
2008-05-26 11:18 1815关键字: 编码 Utf-8编码是如何工作的讲起。 (JVM规范 ... -
jdom和gnujaxp冲突的解决
2008-05-20 21:37 1365在网上看有: java.net.MalformedURLExc ... -
java 中的增量操作
2008-05-14 08:11 959public class Increment { /** ... -
JMX 基础及实例
2008-05-07 10:25 1567JMX Java Management Extensions ... -
weblogic 下excel乱码问题的解决
2008-05-06 18:30 2323在web.xml中配置 <mime-mappin ... -
数据库连接操作java代码
2008-04-15 08:42 1644package com.digitalchina.sitech ... -
小例子来证明String不同于StringBuffer
2008-04-06 11:44 908String 和 ... -
java 初学者必须理解的六大问题(转载)
2008-03-28 18:11 822对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果 ... -
path
2008-02-23 11:44 1006在j2ee开发的过程中经常要获取path的信息 java 如果 ... -
package
2008-02-20 15:06 880在执行class文件的时候,是要进行打包操作的 怎么packa ... -
连接与 连接池
2008-02-19 17:00 952我们可以维护一个进入的连接池,一定数量的 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程序...
Java Runtime Environment (JRE) 1.4.2 是Java应用程序执行所需的关键组件,它为开发者和用户提供了在各种操作系统上运行Java应用的基础。这个版本是Sun Microsystems在2004年发布的一个重要里程碑,它在Java技术的...
Java Runtime Environment(JRE)是Java程序运行所需的基础组件,由Oracle公司提供。1.6.0.7 版本是针对32位操作系统的一个特定发行版,这意味着它设计用于在32位Windows系统上执行Java应用程序。在这个版本中,Java...
ArcGIS Runtime SDK for Java 100.12.0 的...如需在生产环境中使用ArcGIS Runtime SDK for Java,请联系ESRI公司获得授权,现在也有国产替代产品GeoScne Runtime SDK for Java,可以联系易智瑞公司获得相关资源和授权。
Java Runtime Environment 1.8.0是Java开发和运行应用程序必不可少的一部分,它是Oracle公司发布的Java平台标准版(Java SE)的实现。这个版本是32位的,这意味着它设计用于在32位操作系统上运行,比如Windows XP、...
总结来说,32位的Java Runtime Environment在32位操作系统中起着至关重要的作用,为运行Java应用程序提供必要环境。随着技术的发展,尽管64位环境逐渐成为主流,但32位JRE仍然在特定场景下保持着其价值。理解和掌握...
Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台标准版(Java SE)的一部分。在本例中,我们讨论的是64位版本的JRE 1.8.0,适用于Windows操作系统。这个版本的JRE包含...
异常机制在Java中提供了一种优雅的方式来处理程序中的错误。当发生异常时,程序的控制流会从发生异常的地方跳转到相应的异常处理器。这样可以避免程序在错误状态下继续执行,确保程序的稳定性和安全性。异常处理...
Java Runtime Environment-6.0.26.exe
- Java 8引入的这两项特性极大地简化了代码,使得函数式编程在Java中变得更加容易。 总结来说,Java Runtime Environment 1.8.0_45 64bit是Java 8的一个关键组成部分,提供了在64位系统上运行Java应用程序的能力。...
Java中的异常以对象的形式存在,这些对象通常是特定异常类的实例。异常分为两种类型:**检查型异常(Checked Exception)**和**运行时异常(Runtime Exception)**。检查型异常在编译时就需要被处理,而运行时异常则...
Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台标准版(Java SE)的一部分。在本例中,我们讨论的是版本1.8.0_45,这是一个64位的版本,专为64位操作系统设计。这个...
Java SE Runtime Environment(运行时环境)包含了运行以 Java 编程语言编写的程序所必需的 Java 虚拟机、运行时类库和 Java 应用程序启动器。 Java 平台的安全性 一个由角色提供的安全信息的描述。适用于开发人员...
Java Runtime For MacOS X 10.7
Java SE Runtime Environment(运行时环境)包含了运行以 Java 编程语言编写的程序所必需的 Java 虚拟机、运行时类库和 Java 应用程序启动器。 Java 平台的安全性 一个由角色提供的安全信息的描述。适用于开发人员...
Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...
onnx的java包,pom引入后可以试验java调用onnx文件进行cpu模型推理。 具体见https://github.com/microsoft/onnxruntime/blob/master/java/src/test/java/sample/ScoreMNIST.java 和 ...
标签:bytedeco、onnxruntime、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
Sun Java SE Runtime Environment (JRE) 6 是Java平台标准版的一个重要版本,它为运行基于Java技术的应用程序提供了所需的运行环境。Java SE是Java Development Kit (JDK)的一部分,但JRE则不包含开发工具,主要是...
异常处理机制在Java中被设计为一种结构化的方法,使得程序在遇到不可预见的问题时,能够中断当前的操作,转而执行特定的错误处理代码,而不是简单地崩溃。 1. 异常处理名词解释: - 异常(Exception):在Java中,...