/*
* Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.itheima_01.ExceptionDemo.main(ExceptionDemo.java:5)
我们在写代码的时候,经常的出现一些小问题,那么为了方便我们处理这些问题,java为我们提供了异常机制

异常包含了错误的类型、原因以及位置

异常:不正常,我们在代码的时候出现的编译或者运行时的错误

异常的体系结构:
Throwable(最顶层)
Error:出现的不能够处理的严重问题
Exception:可以处理的问题

电脑坏了:
系统中毒:重装系统就可以了
主板坏了:买一台新的
*
*/

/*
* 异常的处理方式:
* 1.捕获处理
* try...catch语句
*
* try {
* 有可能出现问题的代码;
* } catch(ArithmeticException ae) {
* 处理异常;
* }

* 2.抛出去
* 当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常
* 使用关键字throws在方法的声明出抛出异常

*
*try...catch的执行顺序:
* 首先执行try语句
* 如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
* 如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句
*
* jvm处理异常的方式:
* 如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
* 并且还终止了程序,异常后面的代码将不在执行
*/

* 如何处理多个异常:
* 可以使用多个try...catch语句
* 使用一个try和多个catch
*
* 多个catch之间的顺序:
* 多个catch之间可以有子父类
* 平级之间没有顺序关系
* 如果有子父类,父类异常必须放在后面(类似于if..else if..else.)
*

* finally:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
*
* FileWrite 写数据需要close才能写入文件,出现异常后就会退出,这时如果在finally里写入close方法那么异常前的数据可以正常写入
*
* try {
* 有可能出现问题的代码;
*
* } catch(异常对象) {
* 处理异常;
* } finally {
* 释放资源;
* 清理垃圾;
* }
*

public class Exception处理方式 {
public static void main(String[] args) /*throws Exception*/ {
try {
String s = null;
System.out.println(1);
System.out.println(s.startsWith("aa"));
System.out.println(2);//当前面try捕获到异常,后面输出2就不会执行
} catch (Exception e) {
System.out.println("空指针");
System.out.println(3);
} /*function();*/
} /*public static void function() throws Exception {
FileWriter fw = new FileWriter("b.txt"); }*/
}

输出

package day31_exception;

import java.lang.Exception;

/*
* 如何处理多个异常:
* 可以使用多个try...catch语句
* 使用一个try和多个catch
*
* 多个catch之间的顺序:
* 多个catch之间可以有子父类
* 平级之间没有顺序关系
* 如果有子父类,父类异常必须放在后面(类似于if..else if..else.)
*
*
*/
public class Exception多个catch时执行顺序 {
public static void main(String[] args) {
try{
String s = null;
// System.out.println(s.length()); //int[] arr = new int[5];
//System.out.println(arr[8]); System.out.println(2 / 0);
}/*catch (Exception e) {
System.out.println("出现异常了");
}*/catch (ArrayIndexOutOfBoundsException e){
System.out.println("出现数组越界了");
}catch (NullPointerException e) {
System.out.println("出现空指针了");
}catch (Exception e) {
System.out.println("出现异常了");
}
}
}

输出

最新文章

  1. 模拟搭建Web项目的真实运行环境(六)
  2. .NET 4.5 中新提供的压缩类
  3. javaweb学习第一天 debug
  4. 十分钟理解Gradle
  5. hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNod...
  6. css如何让表格table的边框为1像素呢
  7. Hibernate笔记——缓存机制详细分析
  8. 【总结】OJ练习,进行的一些编程语言方面总结
  9. Linux命令压缩与解压缩
  10. PHP微信SDK——Zebra-Wechat
  11. leetcode第13题--Roman to Integer
  12. Java基本数据类型和关键字
  13. CGroup Namspace
  14. BZOJ_1391_[Ceoi2008]order_最大权闭合子图
  15. 定义Sales_data类型
  16. mysql函数技巧整理
  17. C#--IEnumerable 与 IEnumerator 的区别
  18. 3998: [TJOI2015]弦论
  19. [转]Angular4 引用 material dialog时自定义对话框/deep/.mat-dialog-container
  20. _killerstreak

热门文章

  1. Python基础篇(五)_文件和数据格式化
  2. vue中v-slot使用
  3. Natas22 Writeup(header重定向、burp截取抓包)
  4. Vysor Pro1.9.3破解,连接 USB 数据线在电脑上远程控制 Android 手机平板/同步显示画面
  5. hdu1180 诡异的楼梯 bfs
  6. P5021 赛道修建 题解
  7. MATLAB plot 画图大全
  8. 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent
  9. SecureCRT的主题配置
  10. C# 基础知识系列-7 Linq详解