RuntimeException的特殊情况[C++] 有人会在程序中try catch吗?什么样的问题需要用try catch语句执行
http://www.bitscn.com/pdb/java/200605/23824.html
本章的第一个例子是:
if(t == null)
throw new NullPointerException();
看起来似乎在传递进入一个方法的每个句柄中都必须检查null(因为不知道调用者是否已传递了一个有效的句柄),这无疑是相当可怕的。但幸运的是,我们根本不必这样做——它属于Java进行的标准运行期检查的一部分。若对一个空句柄发出了调用,Java会自动产生一个NullPointerException违例。所以上述代码在任何情况下都是多余的。
这个类别里含有一系列违例类型。它们全部由Java自动生成,毋需我们亲自动手把它们包含到自己的违例规范里。最方便的是,通过将它们置入单独一个名为RuntimeException的基础类下面,它们全部组合到一起。这是一个很好的继承例子:它建立了一系列具有某种共通性的类型,都具有某些共通的特征与行为。此外,我们没必要专门写一个违例规范,指出一个方法可能会“掷”出一个RuntimeException,因为已经假定可能出现那种情况。由于它们用于指出编程中的错误,所以几乎永远不必专门捕获一个“运行期违例”——RuntimeException——它在默认情况下会自动得到处理。若必须检查RuntimeException,我们的代码就会变得相当繁复。在我们自己的包里,可选择“掷”出一部分RuntimeException。
如果不捕获这些违例,又会出现什么情况呢?由于编译器并不强制违例规范捕获它们,所以假如不捕获的话,一个RuntimeException可能过滤掉我们到达main()方法的所有途径。为体会此时发生的事情,请试试下面这个例子:
//: NeverCaught.java
// Ignoring RuntimeExceptions
public class NeverCaught {
static void f() {
throw new RuntimeException("From f()");
}
static void g() {
f();
}
public static void main(String[] args) {
g();
}
} ///:~
大家已经看到,一个RuntimeException(或者从它继承的任何东西)属于一种特殊情况,因为编译器不要求为这些类型指定违例规范。
输出如下:
java.lang.RuntimeException: From f()
at NeverCaught.f(NeverCaught.java:9)
at NeverCaught.g(NeverCaught.java:12)
at NeverCaught.main(NeverCaught.java:15)
所以答案就是:假若一个RuntimeException获得到达main()的所有途径,同时不被捕获,那么当程序退出时,会为那个违例调用printStackTrace()。
注意也许能在自己的代码中仅忽略RuntimeException,因为编译器已正确实行了其他所有控制。因为RuntimeException在此时代表一个编程错误:
(1) 一个我们不能捕获的错误(例如,由客户程序员接收传递给自己方法的一个空句柄)。
(2) 作为一名程序员,一个应在自己的代码中检查的错误(如ArrayIndexOutOfBoundException,此时应注意数组的大小)。
可以看出,最好的做法是在这种情况下违例,因为它们有助于程序的调试。
另外一个有趣的地方是,我们不可将Java违例划分为单一用途的工具。的确,它们设计用于控制那些讨厌的运行期错误——由代码控制范围之外的其他力量产生。但是,它也特别有助于调试某些特殊类型的编程错误,那些是编译器侦测不到的。
[C++]有人会在程序中try catch吗?
http://bbs.chinaunix.net/thread-1239870-9-1.html
|
|
<
< < 有个签名貌似帖子好看一点 > > >
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
|
wwwsq
富足长乐
|
82楼[报告]
发表于 2008-08-31 03:52:39 | 只看该作者
|
|
<
< < 有个签名貌似帖子好看一点 > > >
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
blizzard213
伦理协会顾问调研员
小富即安
|
83楼[报告]
发表于 2008-08-31 17:57:31 | 只看该作者
|
|
hello, world!
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
zylthinking
大富大贵
|
84楼[报告]
发表于 2008-08-31 23:08:09 | 只看该作者
|
|
授我以鱼, 不要授我以渔
找工作, linux 系统编程, 服务器编程
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
zylthinking
大富大贵
|
85楼[报告]
发表于 2008-08-31 23:18:19 | 只看该作者
|
|
授我以鱼, 不要授我以渔
找工作, linux 系统编程, 服务器编程
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
lgfang
家境小康
|
86楼[报告]
发表于 2008-09-02 21:09:56 | 只看该作者
|
|
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
wwwsq
富足长乐
|
87楼[报告]
发表于 2008-09-03 17:00:31 | 只看该作者
|
|
<
< < 有个签名貌似帖子好看一点 > > >
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
zylthinking
大富大贵
|
88楼[报告]
发表于 2008-09-03 19:33:57 | 只看该作者
|
|
授我以鱼, 不要授我以渔
找工作, linux 系统编程, 服务器编程
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
bxfqing
f1_小熊猫
小富即安
|
89楼[报告]
发表于 2008-09-03 19:41:53 | 只看该作者
|
|
坚持了不该坚持的,放弃了不该放弃的
少灌水,多学习,少睡觉,多想想。 solo
C语言中指针的使用| 它山之石 可以攻玉-从内核中学到了什么 | 学习算法的那点事儿 | DTCC2014大会立刻报名8.8折!
|
||
wwwsq
富足长乐
|
90楼[报告]
发表于 2008-09-03 21:30:08 | 只看该作者
|
|
<
< < 有个签名貌似帖子好看一点 |
什么样的问题需要用try catch语句执行
http://zhidao.baidu.com/question/68367165.html?qbl=relate_question_2&word=%CE%D2%D4%F5%C3%B4%D6%AA%B5%C0%C4%C7%C0%EF%D2%AA%C8%A5%C5%D0%B6%CF%20try%20catch
一直对try-catch解决什么问题不太了解,能够捕获的异常如除零异常都是事先定义好的吗?try catch都用来解决什么样了问题,我不太理解多线程为什么用try-catch,鸟儿,麻烦高手指点一下
能够捕获的异常都继承自Exception类。 需要以try-catch捕获的是"可检查"异常,所谓"可检查"异常,是指我们应该自行处理的异常。至于处理的手段,要么加以控制(try catch),要么通告(throws)他们有可能产生。通常,应捕捉那些已知如何处理的异常,而通告那些不知如何处理的异常。 java的异常处理机制要求程序员必须捕捉"可检查"异常并提供处理方法,或者向更上层抛出该异常。 try-catch能解决的问题就是处理可能出现的异常,打个比方,考虑如下代码: public void go(){ File file=new File("d:\\a.txt"); FileInputStream fis=null; try {fis=new FileInputStream(file); } catch (FileNotFoundException ex) {System.out.println("file not found");ex.printStackTrace(); } if(fis!=null){//如果找到了文件 …… } } 代码作用是打开一个文件,如果找不到文件(即捕获到了FileNotFoundException),就给出提示。而找不到文件这样的异常,就属于可能会出现的、可以处理的异常,以这段代码为例try-catch的作用就在于系统找不到文件时不会导致程序出错终止,而是继续往下运行。多线程为什么用try-catch,其实也是同样的道理。 还有一类是"不可检查"异常,这类异常通常是不可预知的,或者是程序员无法处理,这类异常程序员无需考虑,它们要么在我们的控制之外(Error,比如java虚拟机出错这样的异常),要么是我们首先就不该允许的情况(RuntimeException,LZ所说的除零异常)。
- 提问者评价
-
非常感谢,也谢谢其他回答!
其他4条回答
其实很简单 以后你就知道了如果什么都不写的话遇到异常 程序立即停止! 如果写了 就会做出异常的 处理有2种方式 楼上的也说了
RuntimeException的特殊情况[C++] 有人会在程序中try catch吗?什么样的问题需要用try catch语句执行相关推荐
- 有人晒出程序员聚餐照片,网友:根据头发量能看出技术水平高低!
有人晒出程序员聚餐照片,网友:根据头发量能看出技术水平高低! 关于程序员的头发一直是网友们爱调侃的一个话题,说什么程序员容易秃顶,这样的话题被大家聊得很热,甚至有人还拿出一组程序员工作一年,三年,五年 ...
- 编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException异常,而且无论在哪种情况下,“总是被执行
package com.bw.tryCatch;import java.util.Scanner;public class zuoYe1 {// 编写应用程序,从命令行传入两个整型数作为除数和被除数. ...
- 在OSI参考模型中,当两台计算机进行文件传输时,为防止中间出现网络故障而重传整个文件的情况,可通过在文件中插入同步点来解决,这个动作发生在( )
在OSI参考模型中,当两台计算机进行文件传输时,为防止中间出现网络故障而重传整个文件的情况,可通过在文件中插入同步点来解决,这个动作发生在( B ) A. 表示层 B. 会话层 C. 网络层 D. 应 ...
- api自动化_如何在不增加人员的情况下自动化API安全程序
api自动化 在这篇文章中,我们将撰写一篇综合文章,内容涉及如何在不增加人员的情况下自动执行API安全程序. 在现代世界中,数据对于提供者和消费者都至关重要. 数据科学的出现证明了这一事实. 对于某些 ...
- 如何在不增加人员的情况下自动化API安全程序
在这篇文章中,我们将撰写一篇综合文章,内容涉及如何在不增加人员的情况下自动执行API安全程序. 在现代世界中,数据对于提供者和消费者都至关重要. 数据科学的出现证明了这一事实. 对于某些组织,整个业务 ...
- 会mysql不会sql_不是吧,不会有人还不知道MySQL中具实用的SQL语句
原标题:不是吧,不会有人还不知道MySQL中具实用的SQL语句 目录 实用的SQL 1.插入或替换 2.插入或更新 3.插入或忽略 4.SQL中的if-else判断语句 5.指定数据快照或备份 6.写 ...
- 什么是社会资源?为什么有人会鄙视程序员没有社会资源?
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:什么是社会资源?为什么有人会鄙视程序员没有社会资源? 除了工作以外,你能支配多少人(调动多少资源)为你办事.比如认识一个所长一 ...
- 针对第2章习题6的SPJ数据库,为项目名称为“一汽”的工程项目建立一个供应情况的视图V_SPJ,视图中应包括供应商代码SNO,零件代码PNO,供应数量QTY,并针对该视图完成下列查询 (1)找出一汽
针对第2章习题6的SPJ数据库,为项目名称为"一汽"的工程项目建立一个供应情况的视图V_SPJ,视图中应包括供应商代码SNO,零件代码PNO,供应数量QTY,并针对该视图完成下列查 ...
- 如何使用 Diago 诊断 Go 程序中的 CPU 和内存使用情况
Diago 是借助 pprof 生成的配置文件和堆快照的可视化工具. 它是一个独立的应用程序,显示每个函数(或函数中每行代码)的 CPU 使用率的调用树,但也可以显示堆快照. 我们将在这篇简短的文章中 ...
最新文章
- java对象转xml 高性能_通过实例学习JAVA对象转成XML输出
- C# 生成系统唯一号
- 黑色星期五c语言,求黑色星期五问题~
- 常用元素位置与大小总结
- 机器学习中的基本数学知识
- 信息系统运维安全管理规定(可作为范文参考)
- SSIS技巧--优化数据流缓存
- 答案对程序不对matlab,程序结果不对
- getchar与getch函数的区别
- CSDN论坛--提问的智慧
- 【爬虫】如何通过爬虫,爬取百度图片?新手小白一看便会,内附超详细代码讲解
- JavaScript键盘按键侦测
- 数字转中文大写= 1234= 一千二百三十四
- python爬取公众号文章_python爬取微信公众号历史文章
- vue echarts绘制市级地图下钻(带注释)
- 图解 Google V8 # 22 :关于内存泄漏、内存膨胀、频繁垃圾回收的解决策略(完结篇)
- 开源物联网监控告警平台JAVA开发
- 怎么让俩张图片在一行_壁纸文案 | 我们俩不会道别
- java 刷新jtextarea,SwingPropertyChangeSupport动态更新JTextArea
- 杭州seo工资高吗?杭州做seo工资一般多少