配图

异常概述

异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误.

Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起错误的方法中抛出异常对象.

方法可以选择自己处理异常,也可以继续传递异常.

异常类型

所有异常类型都是内置类Throwable的子类.Throwable位于异常类层次中的顶部.紧随Throwable之下的两个子类,它们将异常分为两个不同的分支.

一个分支是Exception类,这个类既可以用于用户程序应当捕获的异常情况,也可以用于创建自定义异常类型的子类.Exception有一个重要的子类,名为RuntimeException.

另一个分支是Error类,该类定义了在常规环境下不希望有程序捕获的异常.Error类型的异常有Java运行时系统使用,指运行环境本身出现了某些错误.

未捕获的异常

int d = 0;

int a = 42 / d;

上述语句执行时,系统检测到试图除以零时,它会构造一个新的异常对象,然后抛出异常java.lang.ArithmeticException: / by zero如果没有即时捕获处理,程序会立即终止运行.

捕获异常

使用try和catch来捕获异常.

try {

int d = 0;

int a = 42 / d;

} catch (Exception e){

System.out.println("程序出现了异常");

}

这个时候你就会发现,程序并没有终止运行,而是执行了catch代码中的代码.

自己处理异常有两个优点:

1.允许修复错误.

2.阻止程序自动终止.

多条catch字句

try {

int d = 0;

int a = 42 / d;

} catch (Exception e){

System.out.println("Exception");

} catch (ArithmeticException ae){

System.out.println("ArithmeticException");

}

上面我只是举了一个例子,如果程序先捕获了第一个catch的异常,那么程序不回再去捕获第二个catch的异常,以此类推.

我这是在举例子,因为Exception是所有异常的父类所以绝对不可能后捕获ArithmeticException异常的.

手动抛出异常

使用throw关键字.

try {

throw new ArithmeticException();

} catch (ArithmeticException ae){

System.out.println("ArithmeticException");

}

上述代码中我们手动抛出了ArithmeticException异常,而Java中所有异常都是对象.所以我们要创建ArithmeticException对象并抛出.

引发异常但不处理

使用throws关键字

public void testMethod() throws ArithmeticException {

}

上述代码我们的这个方法执行的时候发生了异常,但是我们不做处理,并且将异常向上抛(抛给调用此方法的方法).

如果我们的方法中使用了自定义异常类,那么我们也需要向上抛出.

自定义异常类

class TestExcption extends Exception{

public TestExcption(){}

public TestExcption(String info){

super(info);

}

}

throw和throws的区别

1.throws使用在函数上.

throw使用在函数内.

2.throws抛出的是异常类,可以抛出多个,用逗号隔开.

throw抛出的是异常对象.

finally

使用finally可以创建一个代码块,改代码块会在执行try/catch代码块之后,并在执行try/catch代码块后面的代码之前执行.也就是说 不管是否有异常抛出,都会执行finally代码块.

try{

} catch (Exception e) {

} finally {

}

java 异常处理 简书_Java基础知识8-异常处理相关推荐

  1. java的技术定义_java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  2. java入门第六天课程_Java基础知识——第六天

    原标题:Java基础知识--第六天 在前面的第四天,已经简单的介绍下了Java中类的结构,今天就深入的说下类的深层结构. 在Java中,可以在同一个类中定义两个或多个共享相同名称的方法,只要它们的参数 ...

  3. java逻辑符号怎么打_Java基础知识之运算符和输入输出

    知识是珍宝,但实践是得到它的钥匙.--托马斯·富勒 Java基础知识之运算符和输入输出 一.运算符1.算术运算符:包括:+,-,*,/(整数运算取整),%(取余),++(递增1),–等 2.赋值运算符 ...

  4. java 新手入门电子书_java基础知识(适合新手入门).pdf

    Java 基础知识 本文中主要分为三个部分,第一个部分介绍java 的基本概念,第二部分介绍了java 的 基础知识,第三部分讲解了java 的语法以及实现代码,适合java 初学者学习. 一 Jav ...

  5. java 注解入门 简书_Java基础-注解

    注解是什么? Java注解(Annotation)又称为Java标注.可以从字面的意思理解它,其实就是一个标注.他可以根据定义作用于不同的地方.注解对他们注解的代码没有直接影响.注解是JDK 5中引入 ...

  6. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  7. json java对象 简书_Java 对象的 Json 化与反 Json 化

    最近在家里修习 Java 这项技能,估计快点满技能点儿了,很开心.不过遇到了一个问题,困扰了我一阵子.问题是这样的,我要写 Android App,与服务器交互.大家都知道 Javascript 不知 ...

  8. java type 简书_Java中的Type详解

    ParameterizedType 参数化类型的使用 package com.keytop.att; /** * 实体类 * Created by fengwenhua on 2017/4/25. * ...

  9. java long 除法运算_java基础知识学习文档二

    一.基本概念 1 对象: 对象是Java类的一个实例,它有状态.属性.行为.如:一个人,具体的某一个人是人类的一个实例.这个人他有名字.性别.年龄等属性,他可以吃饭.说话.走路等行为. 2 类: 类是 ...

最新文章

  1. centos7 tomcat 设置开机启动
  2. 团队-科学计算器-成员简介及分工
  3. Py之cython:python库之cython的简介、安装、使用方法之详细攻略
  4. 一旦有辞职念头就干不长了吗_年轻人辞职需不需要冷静期?辞职需要冷静,不需要企业给出冷静期...
  5. Kubernetes 核心概念 1
  6. 判断字符串是否是空格
  7. 脱离标准文档流(1)---浮动
  8. 自动劫持root密码
  9. Python 安装 lxml 插件
  10. C++--第7课 - 面向对象基本概念
  11. NOIp2017 题解
  12. 虚拟机 无法 ftp服务器系统,访问不到虚拟机上的ftp服务器上
  13. [随笔]_ELVE_git命令复习
  14. python爬取链家网_Python爬链家网租房信息
  15. python文件定位函数_python 文件和路径操作函数小结
  16. stm32外设笔记-freertos配置(四)
  17. 系统弱密码检查John
  18. qq登录,手机号验证,邮箱注册
  19. python getopt argparse_sys.argvgetopt-argparse
  20. R4S 玩转docker(一)

热门文章

  1. 内部代码显示苹果iOS 15.5 Beta新增支持外部链接支付
  2. 比亚迪赵长江:腾势今年将发布两款 SUV、一款 MPV
  3. Redmi K50 Pro核心配置曝光:搭载天玑9000旗舰4nm芯片
  4. 微信圈子将于12月28日停止运营,网友:不是微信朋友圈?
  5. 富士康有麻烦了,iPhone产能已被削减
  6. 黑鲨4游戏手机开启预热:4>5+6+7 比竞品更胜一筹
  7. 华谊兄弟:实际控制人王忠军、王忠磊合计减持1.44%公司股份
  8. 中芯国际人事变动:蒋尚义回归 传梁孟松要走
  9. 4999元起!华为Mate 40今日开启预售:搭载麒麟9000E
  10. 苹果:iPhone 12定价很合适,首批预订秒光说明用户认可