讲述:

1.五个关键字

1.try:尝试捕获异常,具体的下面讲述

2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常。

3.throw:主动的抛出一个异常

情况一:我发现了一个我处理不了的 并且会导致我程序不正常运行的错误,于是我将这个异常抛出去了。(抛给谁了?这个视情况而定)

情况二:我发现了一个不太对的地方会影响我今后的程序运行,为了避免更大的错误产生,我先主动的提出(抛出)这个“问题”

4.throws:方法声明 会抛出这样的异常,用于自定义异常。(初学者 可以暂时绕过)

5.finally:

无论是否发生异常,程序必须执行的代码块。例如:经典的关闭数据库连接例子。多用于执行清理工作。

finally看似很“权威”(必须执行),但是System.exit(1);会让它丧失这个权威性。

2.try+catch

1.联合出击保证程序正常运行。

2.理解:

我们希望写出这样的程序:if(程序正常){我的操作} else{处理不正常}

但是这个程序正常太泛泛了 我们没办法定义它或者枚举它,于是我们用try去监视我们的操作是否正常,

当他不正常的时候,我们抓住这个不正常的情况 处理它。

try-catch 就是在做这么一件有意义的事。

3.注意(新手看不懂可以先绕过):

1.catch可以有多个,谁能抓住谁抓,抓不住就让别人去抓,但是这个是需要层级的(范围小的先catch)

2.try块中的变量只能在try中使用。

3.java7中提供了一次catch多个异常的方式,每个异常使用|分割(注意只有在jdk7下才能使用)

4.java7下的AutoCloseable接口可以使得程序简化有兴趣可自己百度或者查看java api

4.Exception的几个方法(见例子)

5.自定义一个异常:

1.上文说过不肯能枚举所有的异常情况,即便枚举了,但是你也不能冲破认知差异性。(在大象的世界里人类就是异类)

2.定义一个拥有自己业务逻辑的异常类

3.实现方式:继承Exception 或者他的子类

package com.cxy.exception;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;/*** @author cxy*/
public class ExceptionTest
{public static void main(String[] args){try{List l=null;l.get(0);}catch(NullPointerException|ArrayIndexOutOfBoundsException e)  //注意:这里只能java7用,如果你不是java7请去掉一个异常{System.out.println("我抓住了一个异常");System.out.println("异常信息:"+e.getMessage());e.printStackTrace(); //打印异常的跟踪栈信息}System.out.println("=======================");/* throw* 用途:*   1.抛出一个我处理不了的异常      *   2.提前发现问题避免更大的问题发生(实践中得来)*     一个人要盖别墅,后经发现他选址在太平洋中间,于是我抛出了这个问题,避免后面砂石料,工程设计都做好了 发现根本没法建。* 效果:导致程序或者方法终止(如果不catch这个异常的话)* */try{throw new Exception("没事抛着玩"); //主动抛出一个异常} catch (Exception e){e.printStackTrace();}System.out.println("=======================");//throws的用法try{test();} catch (NullPointerException e){System.out.println("catch住了test方法抛出的异常");}System.out.println("=======================");//finally用法FileInputStream fis=null;  //这是一个输入流 相关的知识请见后续文章try{/* 这里会出现找不到cxy.txt这个文件错误* 这里有个问题 无论异常产生与否 我们都需要将fis关闭* java7之前 我们都是使用finally来处理这类的问题,无论是否发生异常都要执行的操作* java7开始,AutoCloseable接口可以不必使用finally来处理这个问题(如果有时间我会写一篇相关的文章)*/fis = new FileInputStream("cxy.txt");} catch (FileNotFoundException e1){e1.printStackTrace(); }finally{try{fis.close();} catch (Exception e){//呵呵 包括这里都套着一个try,因为 程序怕遇到fis是null 或者 io异常e.printStackTrace();}}System.out.println("=======================");//自定义异常类try{throw new MyException("中文异常信息");} catch (MyException e){e.printChineseMsg();}System.out.println("虽然有很多异常,但是我正常完结了~");}/** 提前声明 我这个方法可能会抛出什么样的异常,请调用者自己处理*/public static void test() throws NullPointerException{throw new NullPointerException(); //抛出一个null异常}
}//自己定义的异常
class MyException extends Exception
{public MyException(){}public MyException(String msg){super(msg);//当然 这里你可以加一些日志的操作}/*** 我们期望的能看懂的中文异常信息*/public void printChineseMsg(){System.out.println("异常信息:"+this.getMessage());}
}

相关文章连接:

《JAVA基础 之 异常概述》

《JAVA基础 之 异常追踪栈》

声明:

1.原创文章,转载请标明并加本文连接。

2.更详尽的API请参见  http://docs.oracle.com/javase/7/docs/api/

3.文章反映个人愚见,如有异议欢迎讨论指正

【CXY】JAVA基础 之 异常相关推荐

  1. 【CXY】JAVA基础 之 异常概述

    概述: 1.异常给初学者的感觉(笔者当时就是这个感觉,不知道其他人是否有共鸣?) 1.异常是个什么东西?理解不了 2.很复杂 3.异常很"简陋",没什么用 4.我保证我写的程序正确 ...

  2. Java基础知识——异常Throwable和Exception

    Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...

  3. Java基础笔记-异常

    Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的 ...

  4. 第一阶段:Java基础之异常和处理

    文章目录 Java中异常处理机制的简单和应用 一.异常的体系结构&分类 二.问题扩展 三.应用场景 Java中异常处理机制的简单和应用 异常也是一种对象,Java中有很多异常类,并且定义了基类 ...

  5. Java基础----【异常、线程】

    主要内容 异常.线程 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指 ...

  6. java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...

    @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

  7. java基础之异常_繁星漫天_新浪博客

    在java中引入异常,以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理. 例如; class  Example { public static void ma ...

  8. 【CXY】JAVA基础 之 异常追踪栈

    概述: 异常追踪栈(StackTrace) 1.运行下面的例子,查看打印的异常信息. 2.会发现 method3的异常 一层一层的抛 最后抛到了main方法 3.很多初学者看到呼啦啦一堆异常信息后就有 ...

  9. Java基础:异常机制

    最近开始了找工作的面试,在面试过程中,面试官问了关于Java当中的异常处理机制,一直以来,无论写代码还是看书,自己对异常处理这一块就没有很好的重视过,对它的认知也仅仅停留在通过Try-catch去进行 ...

最新文章

  1. 软件测试用python一般用来做什么-如何将Python应用到实际测试工作中?
  2. 【Groovy】集合遍历 ( “ *. “ 展开操作符 | 代码示例 )
  3. 主存储器与CPU的连接
  4. 白居易--《祭李侍郎文》
  5. [设计模式]迪米特法则
  6. jenkins+pytest+allure接口自动化测试(windows环境)
  7. .Net/C# 实现真正的只读的 Hashtable 类型的属性 (ReadOnly Hashtable Property)
  8. SDNU 1210.通话记录
  9. r语言plotmds_利用R语言进行数据分析
  10. ISO 27001:2022 中文试译稿
  11. VS2010专业版和旗舰版(中文版)下载
  12. pccad 电气元件_CAD电气符号库下载|cad电气符号图库大全 GB4728完整版 - 极光下载站...
  13. HDU4585 Shaolin
  14. 转载:王垠·程序员的心理疾病
  15. Java调用第三方天气预报接口示范
  16. 物理内存管理-ucore操作系统的PADDR宏
  17. GitHub Actions工作流语法
  18. stata合并多张箱线图的命令
  19. 揭秘社会工程学(让你免于被诈骗的命运)
  20. 嵌入式系统概述2-嵌入式系统组成和应用

热门文章

  1. WMCMS小说系统采集插件-WMCMS小说系统采集器下载
  2. 配置maven的中央仓库mirro镜像
  3. 通过CrossTalk在Delphi中使用ADO.Net(1)
  4. C++课后作业 6.教材习题5_7:利用静态变量统计小猫Cat的数量
  5. 前端自动化测试基础-sinon篇章
  6. jQuery中的动画 -- 案例
  7. MySQL5.7修改默认root密码
  8. 计算机无法用u盘重装系统,电脑进不了系统怎么用u盘重装系统?
  9. 推送通知的跳转处理和消息提醒
  10. 黑白图片和黑白图片上色系统毕业设计,AI黑背图像上色系统设计与实现,AI黑白照片上色系统论文毕设作品参考