日期:2018.11.11

星期日

博客期:023

Exception类的学习与继承总结

说起来我们上课还是说过的!老师提到了报错问题出现主要分Exception和Error两类!第一次遇见这个问题是在学习文件的时候,嗯,那时还不知道怎么处理,就大部分代码是在方法抛出,在学到了一部分Java知识以后,我开始使用try{}catch{}的代码来减少throws的方法使用,但当时我是对Exception类毫无了解的,因为每次都是在eclipse里出现红色的下划线之后,我再把光标移动到红线区,让它自动生成try和catch语句,之后就没再管它了!直到我看到了老师的课件,我才明白到——自己应该抓紧学一下Exception类了。(这一段虽然对他人的学习借鉴没什么用,但对我的历程来说是一个值得记住的时间点)

本次还是主要来谈Exception的相关内容,所以我们避重就轻啊!就是说Error的问题我们本次回避。FileNotFoundException这个Exception的子类是会在文件找不到的情况下抛出的(throws)!就不如说File f = new File(“files/HelloWorld.txt”); 这一句是用工作空间目录下的files文件夹下的HelloWorld.txt文件与File类的变量f建立联系。如果该文件不存在,就会报错吗?并不是!File类的exist()方法会返回boolean类型的结果——文件是否存在!那究竟是什么情况下它才会真的抛出呢?答案是你在它不存在的情况下还对它进行读写的操作时才会报错!就是在HelloWorld.txt文件不存在的时候,你调用f来Scanner或PrintWriter的成员并有了sc.next()方法或者pw.print()方法的时候,程序就会报错了!我们可以针对性的添加catch语句捕获Exception类,并做一系列的操作,比如说输出“错误”!

IOException、RowsExceededException,、WriteException三个类是我在研究完txt和dat文件读写完后,去稍微研习了一部分xls文件(Excel表格文件)的读写之时遇到的Exception!这里插入部分代码:

public void writefile() throws IOException, RowsExceededException, WriteException{

WritableWorkbook workbook = Workbook.createWorkbook(new File(Infor));

WritableSheet sheet = workbook.createSheet("Test",0);

Label lab = new Label(0,0,"账号");

sheet.addCell(lab);

Label labs = new Label(1,0,"账户名称");

sheet.addCell(labs);

Label labt = new Label(2,0,"最后操作日期");

sheet.addCell(labt);

Label labf = new Label(3,0,"目前操作数");

sheet.addCell(labf);

Label labfi = new Label(4,0,"密码");

sheet.addCell(labfi);

Label labsi = new Label(5,0,"余额");

sheet.addCell(labsi);

Label labse = new Label(6,0,"流水金额");

sheet.addCell(labse);

for (int i = 1; i <= 5; i++)

{

String t = ku[i-1].GetaccountID();

Label lab1 = new Label(0,i,t);

sheet.addCell(lab1);

t = ku[i-1].Getaccountname();

Label lab2 = new Label(1,i,t);

sheet.addCell(lab2);

t = ku[i-1].Getoperatedate();

Label lab3 = new Label(2,i,t);

sheet.addCell(lab3);

t = Integer.toString(ku[i-1].Getoperatetype());

Label lab4 = new Label(3,i,t);

sheet.addCell(lab4);

t = ku[i-1].Getaccountpassword();

Label lab5 = new Label(4,i,t);

sheet.addCell(lab5);

t = Integer.toString(ku[i-1].Getaccountbalance());

Label lab6 = new Label(5,i,t);

sheet.addCell(lab6);

t = Integer.toString(ku[i-1].Getamount());

Label lab7 = new Label(6,i,t);

sheet.addCell(lab7);

}

workbook.write();

workbook.close();

}

这是之前的代码,大家看我之前的博客就可以知道这一段代码!大家看一下开头,就是throws这一部分!算了,我就直接说吧!IOException是输入输出的错误!就是存在输入格式不符合以及输出不合法的情况!RowsExceededException,这个大家估计不常用我就不介绍了,就是一个表格常见的问题!呃~就是字面上的意思!WriteException是文件写入的情况下抛出的Exception。这都很容易懂!另外BiffException是我之前再次写文件时,合并xls文件时,这xls文件群的格式不统一,因而报错!

ArrayIndexOutOfBoundsException这个Exception是我不常见的,我通常用数组要么是申请很大的空间,要么就是申请刚好够用的空间,很少会存在数组越界的问题!呃~对!没错啦!这个就是数组越界时抛出的Exception类!

再者说一下数据库的操作吧!这里经常出现的Exception就是ClassNotFoundException和SQLException两个!部分代码如下:

try {

Class.forName(driver);

conn = DriverManager.getConnection(url, user, password);

stmt = (PreparedStatement) conn.prepareStatement(sql);

stmt.setInt(1, 9958);

stmt.setString(2, "eagle2");

stmt.setString(3, "king3");

stmt.setInt(4,2017);

stmt.executeUpdate();

} catch (ClassNotFoundException e){

// TODO 自动生成的 catch 块

e.printStackTrace();

} catch (SQLException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

我们从上边的代码可以知道,Class.forName(driver);一句是最先执行的,而且对于驱动就已经出错的情况,我们再继续进行之下的代码也是没有什么用处的!所以在try域内,我们首先监听对ClassNotFoundException的捕获监听,之后是对数据库连接情况的监听,这个的用处大概就在于我们的数据库是否连接成功吧!和刚才的文件读写一样,这个也是在连接数据库失败之后,还继续调用sql方法(sql语句)就会出现的问题!

UnsupportedEncodingException是未知字符编码异常,这个一般真遇不到,不过我遇到了,这个是在java.io.*里的异常类,通常用于伴随OutputStreamWriter pws = new OutputStreamWriter(new FileOutputStream("network/Game.html"),"UTF-8");BufferedWriter writer=new BufferedWriter(pws); 整个的构造出现!

InterruptedException是我在学习多线程编程时遇到的Exception类,就像Thread.sleep(4000);一句,我们需要用try{}catch{}将它包起来,这就是Thread类的相关类!在我查阅了一些资料之后,发现它的异常说明是“一个线程被另一个线程中断,抛出该异常”。

之后是一个更冷门的Exception,我在研究用Java程序播放wav文件的时候遇到的Exception,那就是MalformedURLException了。看!代码!

try {

File f = new File("sounds/background.wav");

ac = Applet.newAudioClip(f.toURI().toURL());

} catch (MalformedURLException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

呃~好吧!这个其实跟音乐播放是没多大关系的!主要是使用了URL这个大包袱!当URL url= new URL(sys);的sys(参数)出现问题时,报错!很多和URL相关的问题都是可以用它来监听!

最后介绍ServletException!这个很容易就知道是和Servlet相关的Exception!就是在servlet连接JavaBean和JSP时,如果两边有一方出现问题使得连接失败,那么ServletException就会被抛出了!

附件:相关学习的资源

http://www.runoob.com/java/java-exceptions.html

Exception类的学习与继承总结的更多相关文章

  1. Javascript学习6 - 类、对象、继承

    原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...

  2. C++学习41 exception类

    C++语言本身或者标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception).你可以通过下面的语句来匹配所有标准异常: try{ //可能抛出异常的语句 } ...

  3. Scala学习之路 (六)Scala的类、对象、继承、特质

    一.类 1.类的定义 scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员用 ...

  4. 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)

    1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...

  5. 类和对象:继承 - 零基础入门学习Python038

    类和对象:继承 让编程改变世界 Change the world by program 上节课的课后作业不知道大家完成的怎样?我们试图模拟一个场景,里边有一只乌龟和十条鱼,乌龟通过吃鱼来补充体力,当乌 ...

  6. Java学习笔记(8)---Scanner类,浅谈继承

    1.Scanner类: a.定义: java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanner(S ...

  7. muduo网络库源码学习————Exception类

    Exception类是为异常捕获而设计,可以获得异常的信息以及栈的回溯信息 (原来的代码没有demangle成员函数,输出的格式比较难看,加了demangle成员函数,利用demangle成员函数可以 ...

  8. Java基础(55):Exception类详解(转)

    Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...

  9. C# Exception类

    一.异常类 1.在C#中所有的异常都是使用一个异常类型的示例对象表示的,这些异常类型都是继承自System.Exception类型,或者直接使用System.Exception类型的实例对象: 2.在 ...

随机推荐

  1. 数据库设计理论与实践·<一>总结

    一.数据库生命周期 数据库生命周期流程图如下: 二.各阶段附图 附图1.1 数据流图 附图1.2 数据字典-方式1 补充说明:数据字典既可以单张表格表示,也可以多种(数据项表/数据结构表/数据流表/外 ...

  2. python - one day

    1. python历史. 2008 年出现 python 2.7 与 python 3.0 两个版本,后来 吉多·范罗苏姆 大叔决定停用 python 2.7,但因用户反对,于是决定于 2020 年停 ...

  3. JDK、JRE、JVM三者间的关系(待更新...)

    JDK(Java Development Kit) JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jv ...

  4. Fragment处理接口回调,网络请求数据

    03-06 19:57:46.138 8691-8691/com.retech.myapplication E/glz: onAttach03-06 19:57:46.138 8691-8691/co ...

  5. 在IntelliJ IDEA 中配置Ueditor富文本插件

    这是我自学的配置教程,刚刚学习不太完善请谅解! 我会根据我的学习进程对此进行更贴,欢迎关注哦 ! 第一步:下载插件,地址:http://ueditor.baidu.com/website/downlo ...

  6. MySql cmd下的学习笔记 —— 有关分组的操作(group by)

    (一) 把建立的goods表找到 (二) 当cat_id = 3时,计算所有商品的库存量之和 计算每个cat_id下的库存量(group by) 需要用到分组,把每个红框内的计算在一起 筛选出本店价比 ...

  7. python3 - 默认参数为列表

    默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 1 2 3 def  add_end(L=[]):     L.append('END')     return L 正常调用时,结 ...

  8. MySQL报错总结

    错误一: MySQL从cmd使用命令“mysql -u root -p”启动报错,显示“不能连接到端口xxx”(实际端口为3306),这里的问题实际是由于我没有设置mysql开机自启动,所以解决方案就 ...

  9. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  10. unity优化建议

    使用Profiler工具分析内存占用情况 System.ExecutableAndDlls:系统可执行程序和DLL,是只读的内存,用来执行所有的脚本和DLL引用.不同平台和不同硬件得到的值会不一样,可 ...