异常的定义:

  Java代码在运行过程中发生的问题就是异常

  异常类:出现问题就会常见异常类对象,并抛出异常的相关信息,异常的位置,原因

异常体系:

  Throwable类是java中所有错误或异常的父类

  Throwable类的子类Error类是所有错误的的父类

  Throwable类的子类Exception类是所有异常的父类

  在开发中,更关心异常而不关心错误

异常和错误的区别:

  异常可以通过开发人员修改代码来处理,让程序继续执行,异常可以被解决,而错误是无法被解决的,也不需要程序员来处理

示例:

package com.zs.Demo;

public class Yichang {
public static void main(String[] args) {
fun();
fun2();
} private static void fun2() {
int[] arr=new int[666666666];
System.out.println(arr);
/* 异常:
*Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at com.zs.Demo.Yichang.fun(Yichang.java:18)
at com.zs.Demo.Yichang.main(Yichang.java:5)*/
} private static void fun() {
int[] arr={1,2};
System.out.println(arr[3]);
/*错误:
* Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at com.zs.Demo.Yichang.fun(Yichang.java:16)
at com.zs.Demo.Yichang.main(Yichang.java:5)
*/
}
}

    出现异常,那么后边的程序都无法执行,因此 要想办法解决这个问题

  异常的处理方式:

    1:抛出异常:throws

    2:编写try..catch

  throws类:写一段代码,存在空指针异常;

public class Demo1 {
public static void main(String[] args) {
int [] arr=null;
function(arr);
} private static void function(int[] arr) {
int i=arr[arr.length-1];
System.out.println(i);
}
}

  throws抛出异常:

public class Demo1 {
public static void main(String[] args) throws Exception {
int [] arr=null;
function(arr);
} private static void function(int[] arr) throws Exception {
if (arr==null)
throw new Exception("传递数组不存在");
if (arr.length==0)
throw new Exception("传递的数组中没有元素");
int i=arr[arr.length-1];
System.out.println(i);
/*Exception in thread "main" java.lang.Exception: 传递数组不存在
at com.zs.Demo.Demo1.function(Demo1.java:11)
at com.zs.Demo.Demo1.main(Demo1.java:6)
*/
}
}

  如果是运行时异常(RuntimeException),不需要throws声明,必须改代码,否则无意义;

  try...catch异常处理方法:

package com.zs.Demo;

public class Demo2 {
public static void main(String[] args) {
int [] arr=null;
try {
function(arr);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("结束");
} private static void function(int[] arr) throws Exception {
if (arr==null)
throw new Exception("传递数组不存在");
if (arr.length==0)
throw new Exception("传递的数组中没有元素");
int i=arr[arr.length-1];
System.out.println(i);
/*java.lang.Exception: 传递数组不存在
at com.zs.Demo.Demo2.function(Demo2.java:16)
at com.zs.Demo.Demo2.main(Demo2.java:7)
结束
*/
}
}

这里发现,虽然程序有异常,但是依然执行后面的代码,这就是异常处理

finally:

package com.zs.Demo;
/*finally:代码必须执行,无论有没有异常都要执行*/
public class Demo3 {
public static void main(String[] args) {
try {
fun(1);
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("必须执行的代码");
}
} private static void fun(int i) throws Exception {
if (i==0)
throw new Exception();
System.out.println(i);
}
/*结果:1
必须执行的代码 可以看出即使程序没有异常,也会执行finally代码*/
}

注意:父类的方法如果抛出异常,子类重写后可以不抛出异常,但是子类如果要抛出异常,这个异常的继承关系不能大于父类的异常

Throwable类的方法:

/*Throwable类中的方法都和异常信息有关
* String getMessage() 对异常信息的详细描述
* String toString() 对异常信息的简短描述
* void PrintStackTrace() 异常信息最全的jvm默认调用的方法*/
public class ThrowableDemo {
public static void main(String[] args) {
try {
fun();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
String me = e.getMessage();
System.out.println(me);
/*java.lang.Exception: 异常了,下雨了
at com.zs.Demo.ThrowableDemo.fun(ThrowableDemo.java:19)
at com.zs.Demo.ThrowableDemo.main(ThrowableDemo.java:9)
java.lang.Exception: 异常了,下雨了
异常了,下雨了*/
}
} private static void fun() throws Exception {
throw new Exception("异常了,下雨了");
}
}

  

Java学习笔记26(异常)的更多相关文章

  1. 1.13(java学习笔记)异常机制

    异常不同于错误,它是程序运行时产生的未知问题. 如果把程序比喻成一辆汽车,那么汽车开着开着突然前面出现了一个大石头挡住了路,这就叫异常. 那么出现了这个异常我们需要去处理,比如打电话给公路管理局,让它 ...

  2. Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)

    Math类:数学工具类,做一些数学计算,开方,对数,三角函数等 所有方法都是静态方法,不需要建立对象,直接用类名调用即可 示例: 这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即 ...

  3. 【原】Java学习笔记030 - 异常

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 异常:Java ...

  4. Java学习笔记__异常机制_try_catch_finally_return执行顺序

    package cn.xiaocangtian.Exception; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  5. Java 学习笔记之 异常法停止线程

    异常法停止线程: public class RealInterruptThread extends Thread { @Override public void run() { try { for ( ...

  6. JAVA学习笔记—review基本知识[反射与异常]

    JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...

  7. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  8. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  9. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

随机推荐

  1. 使用saltui实现图片预览查看

    项目是基于dingyou-dingtalk-mobile脚手架的一个微应用,这个脚手架使用的UI是antd-mobile,它提供了一个图片上传的组件,但是未提供图片预览的组件,在网上找了不少如何在re ...

  2. 三大平衡树(Treap + Splay + SBT)总结+模板[转]

    Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...

  3. 一、I/O操作(File文件对象)

    一.File类 Java里,文件和文件夹都是用File代表 1.使用绝对路径或者相对路径创建File对象 使用绝对路径或者相对路径创建File对象 package File; import java. ...

  4. 学习建一个spring-Mvc项目

    学习建一个spring-Mvc项目 首先要有jdk1.8以上,spring,mybatis,以及整合jar包,tomcat ,然后配置环境(前面有配置得方法). 1)右键new project,--& ...

  5. 4.Liunx磁盘管理

    1.磁盘管理:df .du 2.磁盘加载:mount. umount 3.磁盘分区:fdisk 1.df -h 查看硬件

  6. Win10系列:UWP界面布局进阶7

    Canvas Canvas元素用于定义一个区域,可以向这个区域中添加不同的XAML界面元素.Canvas会对其内部的元素采用绝对布局方式进行布局,下面通过三个示例来介绍Canvas的使用方法. (1) ...

  7. Win10系列:UWP界面布局基础7

    2.附加属性 有一些XAML元素,其自身的属性大多是在其它的元素中声明和使用的,该元素本身却很少使用,这些在其他元素中声明和使用的属性被称为附加属性(Attached Properties).附加属性 ...

  8. pyhton字符串

    a = 5 # 1 + 1 = 10 + 1 = 11 + 1 = 100 + 1 = 101print(a.bit_length()) # 计算一个数字的二进制长度. a = 10# print(t ...

  9. bzoj1010

    题解: 斜率优化dp f[i]=f[j]+(i-j+sum[i]-sum[j]-L)^2 然后斜率优化 代码: #include<bits/stdc++.h> typedef long l ...

  10. CSS(一)属性--border边框

    HTML代码 <body> <div>举个例子</div> </body> CSS代码: div{ font-size:12px;  //字体大小,默认 ...