java学习(17)
来源:互联网 发布:linux steam服务器 编辑:程序博客网 时间:2024/05/22 00:43
from: http://android.yaohuiji.com/archives/3607
本讲内容:异常 软件开发中有80%的工作是用来检查和处理错误,而检查并处理错误很多时候是一件枯燥无趣的事情,如果在语言级别提供一些帮助的话,会减轻一些程序员的负担。 而Java提供了一套比较优秀的异常处理机制: 1、异常及异常的分类 异常是指在程序中出现的异常状况,在Java中异常被抽象成一个叫做Throwable的类。 其中如果程序出错并不是由程序本身引起的,而是硬件等其他原因引起的,我们称之为Error,一般情况下Error一旦产生,对程序来说都是致命的错误,程序本身无能为力,所以我们可以不对Error作出任何处理和响应。 异常如果是由程序引起的我们称之为Exception,Exception又分两种,我们把运行时才会出现的异常叫做 RuntimeException,RuntimeException我们不好在程序编写阶段加以事先处理,而其他异常则可以在程序编写和编译阶段加以事先检查和处理,我们把这种异常叫做检验异常。 程序只需要捕捉和处理检验异常。 相应的我们把除检验异常(可检查异常)之外的异常称之为非检验异常,包括Error和RuntimeException ,非检验异常可以捕捉也可以不捕捉,更多的时候我们不捕捉,因为捕捉了我们也没办法处理,譬如程序运行时发生了一个VirtualMachineError异常,虚拟机都出错了,作为运行在虚拟机内的程序又有什么办法处理呢? 下面我们用图来表示一下上面讲述的内容: 2、异常的处理 try ^ catch ^ finally 异常相关的处理语法可以用下图概括一下: 异常处理的几条规则: 下面提供一个使用异常的例子,请注意看相关注释: 3、常见异常 好了本讲就到这里,下节课我们讲自定义异常和调用栈。Java基础第十七讲:异常处理(一)
1、使开发人员不必编写特殊代码来测试返回值就能发现问题,
2、在语法结构就把正常的代码和异常处理的代码清晰的分开来,
3、允许我们使用相同的异常处理代码来处理一定范围内的所有异常。
以期产生一种高效的、有组织的异常处理方式。001
import
java.io.BufferedReader;
002
import
java.io.BufferedWriter;
003
import
java.io.FileNotFoundException;
004
import
java.io.FileReader;
005
import
java.io.FileWriter;
006
import
java.io.IOException;
007
import
java.util.ArrayList;
008
import
java.util.List;
009
010
public
class
Bank02 {
011
012
//用ArrayList存储储户信息
013
List<String[]> list =
new
ArrayList<String[]>();
014
015
//用初始化块准备一些测试数据
016
{
017
String[] account = {
"10001"
,
"aya"
,
"111111"
,
"60000"
};
018
list.add(account);
019
account =
new
String[] {
"10002"
,
"bean"
,
"222222"
,
"40000"
};
020
list.add(account);
021
}
022
023
//用BufferedWriter和BufferedReader读写文件
024
BufferedWriter bw;
025
BufferedReader br;
026
027
// 字符串数组转字符串,试图写一个通用方法
028
public
static
String arrayToString(String[] input, String space) {
029
String output =
""
;
030
for
(
int
i =
0
; i < input.length; i++) {
031
output += input[i] + space;
032
}
033
return
output.substring(
0
, output.length() -
1
);
034
}
035
036
// 写文件
037
public
void
writeFile() {
038
try
{
039
//try代码块又称之为"监视区域",表示有可能出问题闹异常的代码写在这里
040
bw =
new
BufferedWriter(
new
FileWriter(
"bank.txt"
));
041
for
(String[] account : list) {
042
bw.write(arrayToString(account,
" "
));
043
bw.newLine();
044
}
045
bw.flush();
046
}
catch
(IOException e) {
047
//可以使用一个catch来捕捉异常
048
//doSomething
049
050
//打印出异常的堆栈踪迹
051
e.printStackTrace();
052
}
finally
{
053
//finally提供了一个在正常时和异常时都需要执行的代码段,在这里可以进行一些资源的释放工作,数据的清理工作
054
try
{
055
bw.close();
056
}
catch
(IOException e) {
057
e.printStackTrace();
058
}
059
}
060
061
}
062
063
// 读文件
064
public
void
readFile() {
065
try
{
066
//try代码块又称之为"监视区域",表示有可能出问题闹异常的代码写在这里
067
br =
new
BufferedReader(
new
FileReader(
"bank.txt"
));
068
String temp =
""
;
069
list.clear();
070
while
((temp = br.readLine()) !=
null
) {
071
list.add(temp.split(
""
));
072
}
073
}
catch
(FileNotFoundException e) {
074
//可以使用一个catch来捕捉异常
075
//doSomething
076
077
//打印出异常的堆栈踪迹
078
e.printStackTrace();
079
}
catch
(IOException e) {
080
//也可以用一组catch来捕捉多个异常,如果多个异常之间有继承关系,那么父类异常写下面
081
e.printStackTrace();
082
}
finally
{
083
//finally提供了一个在正常时和异常时都需要执行的代码段,在这里可以进行一些资源的释放工作,数据的清理工作
084
try
{
085
br.close();
086
}
catch
(IOException e) {
087
e.printStackTrace();
088
}
089
}
090
}
091
092
public
static
void
main(String[] args) {
093
//创建一个bank对象
094
Bank02 bank =
new
Bank02();
095
//写入数据
096
bank.writeFile();
097
//读取数据
098
bank.readFile();
099
}
100
101
}
- java学习(17)
- java学习(17)
- java学习(17)
- 【java】java学习(一)
- 【java】java学习(二)
- Java学习笔记18天---(17)
- 我的java学习日记(17)
- Java基础知识学习。(2015,6,17)
- java学习笔记17
- Java学习笔记17
- Java学习-17天
- Java学习(途径!)
- 学习JAVA(一)
- 学习Java(一)
- java学习(1)
- java学习(2)
- java学习(3)
- java学习(4)
- java学习(15)
- 钉子的故事——你是否选择iBatis?
- vs中配置命令行参数&&VS中添加opencv2.2的静态链接库文件
- java学习(16)
- [分享] 数据库服务管理脚本,超好用! 支持oracle,mysql,sqlserver,tomcat(本人在源程序上修改的)
- java学习(17)
- java学习(17)
- HTML 滚动效果
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
- 软件项目管理师复习指南十一:项目成本管理
- java学习(18)
- MongoDB与CouchDB全方位对比
- java学习(19)
- ES PES TS流的区别