zoukankan      html  css  js  c++  java
  • Java异常处理

    异常分为两种:

      Throwable类是所有异常或错误的超类。

      Throwable有两个重要的子类:Exception(异常)和 Error(错误)。
      Exception又分为两大类:一种是编译时异常,又称检查异常(checked Exception),

                  另一种是运行时异常,又称非检查异常(Unchecked Exception)。

    检查异常:程序在编译时所出现的异常,一旦发出声明,必须解决。

    非检查异常:程序在编译时没有进行提示的异常,可以处理也可以不处理。

    一、编译时异常(checked Exception)

      编译时异常是JVM在运行时发生的非程序的故障,程序无法处理的错误,表示程序在编译过程中出现的严重问题。

      如:IOException 、SQLException … …

    二、运行时异常(Unchecked Exception)

      在程序编译时未被检查出的异常被称之为运行时异常

    JDK7及以后关闭资源方式:try-with-resource

    try (一个类(接口)实现了AutoCloseable接口,就可以放入try with resource里面) {
    	
    }catch (Exception e) {
    	e.printStackTrace();
    }
    // 例:
    try (Scanner scan = new Scanner(System.in);) {
    	System.out.println("请输入一个正整数:");
    	int num = scan.nextInt();
    	prime.doPrime(num);
    }catch (ArithmeticException e) {
    	e.printStackTrace();
    }
    

    Java异常处理

    throw与thtows关键字

      throws:用于在方法上声明异常;而throw则是在在代码块中通过new关键字来抛出异常的。

    异常捕获

    try、catch、finally、throw、throws的用法:

      throw:一般自己声明的异常。

      throws:只能用与方法声明中,用来声明某个方法可能会出现异常。

      try : 存放容易出现异常的代码。

      catch:抓住try块中的异常,并处理。

      finally:不管是否发生异常都会执行,工作中用来清理对象占用的内存。

    try-catch 语句

    一般我们在代码容易出现异常的情况下使用try{}catch{}关键字来捕获异常。

    语法如下:

    try{
       // 可能发生异常的代码
    } catch(Execption e) {
       // 异常的处理语句
    }
    

      catch语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

    如果代码可能出现多个异常,那么需要使用多重捕获块来捕获可能发生的异常。

    语法如下:

    try{ 
       // 可能发生异常的代码 
    }catch(异常类型1 异常的变量名1){ 
       // 异常的处理语句1
    }catch(异常类型2 异常的变量名2){
       // 异常的处理语句2
    }catch(异常类型3 异常的变量名3){ 
       // 异常的处理语句3
    } ...
    

      如果try里面的代码出现异常,这会依次(从上到下)与catch进行匹配。
      注意:多重catch的时候子类异常类型放在前面,父类异常类型放在后面。

    try-catch-finally 语句

      检测异常,并传递给 catch 处理,并在 finally 中进行资源释放。

    try{ 
       // 可能发生异常的代码 
    }catch(异常类型1 异常的变量名1){
       // 异常的处理语句1
    }catch(异常类型2 异常的变量名2){
       // 异常的处理语句2
    }finally{ 
       // 无论try中代码是否发生异常,finally中的代码始终会被执行。
    }
    

    自定义异常

    语法格式:

    class 自定义异常名 extends Exception或RuntimeException {
    	public 自定义异常名() {
    		// 默认调用父类无参构造方法
    	}
    	public 自定义异常名(String str) {
    		// 调用父类具有异常信息的构造方法
    		super(str);
    	}
    }
    
    • 如果发现代码中出现的异常在Java异常类中没有的,则需要自定义异常。
    • 所有异常都必须是 Throwable 的子类。
    • 如果希望写一个检查性异常类,则需要继承 Exception 类。
    • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

    常见的运行时异常:

      NullPointerException :空指针异常

      ArrayIndexOutOfBoundsException :数组下标越界异常

      ArithmeticException :算术异常

      ClassCastException :类型转换异常

      InputMismatchException :输入不匹配异常

      RuntimException :运行时异常

    常见的Error异常:

        StackOverflowError :栈内存溢出错误,栈内存已经满了

        OutOfMemoryError :JVM内存过小、程序不严密,产生了过多的垃圾。

    Error与Exception的区别???

      可以参考:https://www.cnblogs.com/lcl-dcr/p/7653274.html

      Throwable类是所有异常或错误的超类。

      Throwable有两个重要的子类:Exception(异常)和 Error(错误)。
      Exception又分为两大类:一种是编译时异常,又称检查异常(checked Exception),

                  另一种是运行时异常,又称非检查异常(Unchecked Exception)。

    检查异常:程序在编译时所出现的异常,一旦发出声明,必须解决。

    非检查异常:程序在编译时没有进行提示的异常,可以处理也可以不处理。

    一、编译时异常(checked Exception)

      编译时异常是JVM在运行时发生的非程序的故障,程序无法处理的错误,表示程序在编译过程中出现的严重问题。

      如:IOException 、SQLException … …

    二、运行时异常(Unchecked Exception)

      在程序编译时未被检查出的异常被称之为运行时异常

    JDK7及以后关闭资源方式:try-with-resource

    try (一个类(接口)实现了AutoCloseable接口,就可以放入try with resource里面) {
    	
    }catch (Exception e) {
    	e.printStackTrace();
    }
    // 例:
    try (Scanner scan = new Scanner(System.in);) {
    	System.out.println("请输入一个正整数:");
    	int num = scan.nextInt();
    	prime.doPrime(num);
    }catch (ArithmeticException e) {
    	e.printStackTrace();
    }
    

    Java异常处理

    throw与thtows关键字

      throws:用于在方法上声明异常;而throw则是在在代码块中通过new关键字来抛出异常的。

    异常捕获

    try、catch、finally、throw、throws的用法:

      throw:一般自己声明的异常。

      throws:只能用与方法声明中,用来声明某个方法可能会出现异常。

      try : 存放容易出现异常的代码。

      catch:抓住try块中的异常,并处理。

      finally:不管是否发生异常都会执行,工作中用来清理对象占用的内存。

    try-catch 语句

    一般我们在代码容易出现异常的情况下使用try{}catch{}关键字来捕获异常。

    语法如下:

    try{
       // 可能发生异常的代码
    } catch(Execption e) {
       // 异常的处理语句
    }
    

      catch语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

    如果代码可能出现多个异常,那么需要使用多重捕获块来捕获可能发生的异常。

    语法如下:

    try{ 
       // 可能发生异常的代码 
    }catch(异常类型1 异常的变量名1){ 
       // 异常的处理语句1
    }catch(异常类型2 异常的变量名2){
       // 异常的处理语句2
    }catch(异常类型3 异常的变量名3){ 
       // 异常的处理语句3
    } ...
    

      如果try里面的代码出现异常,这会依次(从上到下)与catch进行匹配。
      注意:多重catch的时候子类异常类型放在前面,父类异常类型放在后面。

    try-catch-finally 语句

      检测异常,并传递给 catch 处理,并在 finally 中进行资源释放。

    try{ 
       // 可能发生异常的代码 
    }catch(异常类型1 异常的变量名1){
       // 异常的处理语句1
    }catch(异常类型2 异常的变量名2){
       // 异常的处理语句2
    }finally{ 
       // 无论try中代码是否发生异常,finally中的代码始终会被执行。
    }
    

    自定义异常

    语法格式:

    class 自定义异常名 extends Exception或RuntimeException {
    	public 自定义异常名() {
    		// 默认调用父类无参构造方法
    	}
    	public 自定义异常名(String str) {
    		// 调用父类具有异常信息的构造方法
    		super(str);
    	}
    }
    
    • 如果发现代码中出现的异常在Java异常类中没有的,则需要自定义异常。
    • 所有异常都必须是 Throwable 的子类。
    • 如果希望写一个检查性异常类,则需要继承 Exception 类。
    • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

    常见的运行时异常:

      NullPointerException :空指针异常

      ArrayIndexOutOfBoundsException :数组下标越界异常

      ArithmeticException :算术异常

      ClassCastException :类型转换异常

      InputMismatchException :输入不匹配异常

      RuntimException :运行时异常

    常见的Error异常:

        StackOverflowError :栈内存溢出错误,栈内存已经满了

        OutOfMemoryError :JVM内存过小、程序不严密,产生了过多的垃圾。

    Error与Exception的区别???

      可以参考:https://www.cnblogs.com/lcl-dcr/p/7653274.html

  • 相关阅读:
    Linux下文件属性(drwxr-xr-x)详解以及(-rwxrwxrwx=777)(转)
    Linux中chown和chmod的区别和用法(转)
    以root用户身份在jenkins中运行shell命令
    Java中Properties配置文件读取
    Java分布式服务框架Dubbo初探(待实践)
    Servlet3.0新特性
    Java中System.getProperty()的参数
    Java获取路径的方法分析详解(Application/Web)
    Java中的JAR/EAR/WAR包的文件夹结构说明(转)
    JAR包中的MANIFEST.MF文件详解以及编写规范
  • 原文地址:https://www.cnblogs.com/lyang-a/p/11490037.html
Copyright © 2011-2022 走看看