java异常学习

一、从根部异常可以分为Erro和Exception两大类他们都继承自Thorwable:

 Error一般指的是一些无法挽回的错误,当这些错误发生后,程序就会直接死掉,无法继续运行。

 Exception : 一般分为:运行时异常和非运行时异常,

    运行时异常:指的是程序已经通过编译,在程序运行时产生了异常,这个是由于程序自己编写的代码不够健壮,考虑不够完善导致的。如果程序员足够认真这些是完全可以避免的。

    非运行时异常:是程序代码语法错误 ,在程序编译时就不能通过而抛出的异常。

public class Test {  

    public static void main(String[] args) {
        String filename = "d:\\test.txt";
        try {
            FileReader reader = new FileReader(filename);
            Scanner in = new Scanner(reader);
            String input = in.next();
            int value = Integer.parseInt(input);
            System.out.println(value);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            System.out.println("this is finally block!");
        }
    }
} 

如果d盘根目录下没有test.txt的话,该程序抛出异常:

this is finally block!
java.io.FileNotFoundException: d:\test.txt (系统找不到指定的文件。)
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.<init>(FileInputStream.java:106)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at java.io.FileReader.<init>(FileReader.java:41)
 at Test.main(Test.java:10)
可以看出上面的异常抛出时没有指名异常的具体发生出处。

我们将test.txt中的2322改成abc,看看结果:

this is finally block!
Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
 at java.lang.Integer.parseInt(Integer.java:447)
 at java.lang.Integer.parseInt(Integer.java:497)
 at Test.main(Test.java:13)

这时我们会发现,该异常指明了异常的内容和发生的出处,那时因为该异常我们没有对它进行声明,而FileNotFoundException我们对它进行了声明所以,在此异常抛出时没有指名它的出处。

总结: 异常的一般处理,如果我们声明一个异常秉承并处理它,则在该异常发生时会进行相应的处理。如果对于一个异常我们没有对它进行声明处理,那么在异常发生时,回去调用相关的方法,如果该方法也没有声明处理,则它会一直回溯直至main函数。

二、常见的异常:

  NullPointerException 空指针、ClassNotFoundException  找不到类 、ClassCastException   类型转换、ArithmeticException   算数条件

  ArrayIndexOutOfBoundsException  数组越界

三、自定义异常:

  使用自定义异常的原因:一、java不可能封装所有我们在程序可能用到的异常。二、java封装的异常提示信息部明了。基于这两点我们可以进行自定义异常的创建,来改善异常的处理。

pbulic  class MyException  extends RuntimeException{
    public MyException(){
    }
    pubic MyException(String message){
         super(message);
     }
}

四、try/catch/finally的使用情况:

在进行异常处理时,尽量不要将catch 和 finally放在一起使用。

public class  FinallyTest{
    public static main(String[] agrs){
         boolean file = open();
    }
    public static boolean open(){
      string  filename = "d://test.txt";
        try{
            try{
                  FileReader  file = new FileReader(filename);
                 Scanner  sn = new Scanner(file);
                  String  str = sn.next();
                   int   num = Integer.paseInt(str);
                    System.out.println(num);
            }finally{
                //关闭一些资源
            }
        }catch(exception e){
            Systme.out.println("文件内容输出异常");
        }
    }
}

  尽量将catch和finally分开处理,catch进行异常的捕捉,finally进行一些流的关闭。。。

时间: 2024-12-24 00:17:45

java异常学习的相关文章

“全栈2019”22篇Java异常学习资料及总结

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Java异常学习资料及总结 下一章 "全栈2019"Java多线程第一章:认识多线程 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组". 全

2.Java异常学习

1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ throw new Exception(); } b.捕获异常 catch(Exception e){ //异常处理程序 } c.finally代码块 必须注意的是:在finally块中不能抛出异常. finally{ //一定会被执行 //除非catch中有System.exit(0);会推出Java

java 异常学习

原文出处 :http://www.cnblogs.com/lulipro/p/7504267.html 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. Java提供了更加优秀的解决办法:异常处理机制. 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰.Java中

Java异常学习总结

Java中的异常 定义 异常(Exception)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 常见类型举例 所需文件找不到(ClassNotFoundException) 网络连接不通或中断 Sql语句执行异常(SQLException) 输入输出异常(IOException) 算术运算异常(被0除)ArithmeticException 数组下标越界(ArrayIndexOutOfBoundsException) 装载一个不存在的类或者null对象操作(NullPoi

java基础 异常学习笔记

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正确的执行. 2.一旦产生异常之后,异常之后的语句并不会执行,而是直接结束程序,并将错误报告给用户. 3.在计算机发展史有两大杀手:断电,被除数为0(结果为无穷大,则程序内容会被全部占满). 处理异常的格式: try{// 可能出现异常的语句} catch(异常类异常对象){//编写异常的处理语句} ca

Java线程学习笔记(二) 线程的异常捕捉

线程异常的捕捉: 正常的情况下,我们在main()方法里是捕捉不到线程的异常的,例如以下代码: public class ExceptionThread implements Runnable{ @Override public void run() { throw new NullPointerException(); } public static void main(String[] args) { ExecutorService executorService = Executors.n

《深入Java虚拟机学习笔记》- 第17章 异常

<深入Java虚拟机学习笔记>- 第17章 异常

Java并发学习之八——在线程中处理不受控制的异常

本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.Java里有2种异常: 检查异常:这些异常必须强制捕获她们或在一个方法里的throws子句中. 未检查异常:这些异常不用强制捕获它们. 2.在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理她们.因为run()方法不接受throws子句.当一个非检查异常抛出,默认的的行为是在控制台写下stack trace并退出程序. package chapter; public class Main8 { /** * <p> *

【学习笔记】java异常

异常是程序在执行时发生的事件,它会打断指令的正常流程. Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误. Java异常是一个描述在代码段中发生的异常情况(出错)的对象. 引发异常: 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象.生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称为引发异常. 分类: JRE(系统)产生异常对象 人为产生异常对象(明确用throw关键字) 异常处理机制: 两种处理例外的机制: 捕获异常(try