没有按照原定的计划进行,发生了特殊状况,异常机制提供了程序退出的安全通道,当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 上图简单的展示了一下异常的结构图,但不是所有的异常,具体的可以查看api文档,还可以自定义异常 Throwable:是Java中所有错误或异常的超类,有两个重要的子类:Error(错误)和Exception(异常) Error(错误):表示Java中的错误,一般是运行环境(jar包,依赖)等出了问题,是程序无法处理的错误,大多数与代码编写者的执行操作无关. Exception(异常):是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件,是程序本身可以处理的异常. NullPointerException:当应用程序试图在需要对象的地方使用 null 时,抛出该异常 2.非运行时异常(编译异常):是RuntimeException以外的异常,类型都是Exception类及其子类,对于非运行时异常,Java编辑器强制要求,我们必须对这些异常进行处理,否则程序不能编译通过,常见的有: IOException:io异常 以上异常知识简单的举例了几个,仅供参考,具体情况,请在代码中具体分析 throw new 异常信息:(手动制造一个异常) 当需要指定运行异常时,可以在发生异常的时候,使用throw new RuntimeException(msg) 学到就要用到,来上实例: 使用throws关键字抛出异常: 现在报错提示我们有异常,要么抛出,要么捕获,我们这里选择throws抛出,也就是对应的第一个选项Add throws declaration 表示:当try中的语句发生异常时,会先到第一个catch中来查找是否发生了第一个异常,如果不是第一个就继续往下找,看是否是异常2,当处理完之后直接结束try…catch语句 格式1为: try{ 被捕捉的代码 }catch(异常类型 e){ 对异常的处理 } 格式2为: try{ 语句1; 语句2; }catch(异常类型1 e){ 对异常的处理1 }catch(异常类型2 e){ 对异常的处理2 }catch(异常类型3 e){ 对异常的处理3 } 注意:当一个异常同时可以被多个catch捕获时,会采用就近原则,会选择与这个异常最相近的catch去执行 当多个catch语句中的异常时父子关系时,应将子异常写在前面。父异常写在后面 这里还拿刚才的例子来简单的说明: 现在咱们选择第二个Surround with try/catch **finally:**无论异常是否发生都会执行的代码块(根据需要,不是必须) 来看格式: try{ 语句1; 语句2; }catch(Exception e){ 对异常的处理 }finally{ 最后一定会执行的代码; 比如我们使用完某个资源为了防止浪费,最后一定要关闭,操作中途可能有异常导致程序中断,但 } 来看代码,咱们故意写一个异常来看效果: 好了,本期异常就说到这里了,如果对异常或者其他有不懂的地方,欢迎前来加我微信进行探讨 看完别忘记哦
标题# Java异常简介——Exception And Err等之处理机制
Java异常的概念:
异常的分类:
Exception分为两大类:运行时异常和非运行时异常(编译异常)
1.运行时异常:RuntimeException类及其子类异常,这些异常时不检查异常,程序可以选择捕获,也可以选择不处理,一般是由程序逻辑错误引起的,常见的运行时异常有:
IndexOutOfBoundsException:下标越界异常,指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出
ClassNotFoundException:类找不到异常
SQLException:MySQL数据库引起的异常异常的处理机制
1.使用throw关键字抛出异常
注:msg自定义的异常信息public class ThrowException { public static void main(String[] args) { Scanner key = new Scanner(System.in); System.out.println("请输入年龄"); int age = key.nextInt(); if(age<=0){ throw new RuntimeException("你还没出生,赶紧回去别捉妖"); } System.out.println(age); key.close(); } }
2.使用throws关键字抛出异常
在方法或类的后面加上throws XXXException(代表对应发生的异常)
throws:抛出得意思,表示将异常抛给上级(调用者)处理
如果是加在main方法得后面,表示交给Java虚拟机去处理异常public class IODemo01 { public static void main(String[] args) throws IOException { File file = new File("D:\我很帅.txt"); file.createNewFile(); } }
3.捕捉处理异常:try…catch代码块
即:范围小的异常写在前面,范围大的异常写在后面public class IODemo01 { public static void main(String[] args){ File file = new File("D:\我很帅.txt"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } }
3.1 finally代码块
是并不影响资源的关闭public class ExceptionDemo06 { public static void main(String[] args) { try { System.out.println("打开连接池"); //在数学里面0不可以做为被除数的,所以这里会报异常:java.lang.ArithmeticException int a = 2/0; System.out.println("pilipal"); System.out.println("劈里啪啦工作中"); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("关闭连接池"); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算