异常:将程序执行中发生的不正常情况(当执行一个程序时,如果出现异常,那么异常之后的代码就不在执行。)

java.lang.Throwable:异常的超类

1、Error:java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。一般无法通过编写代码处理。

2、Exception:因编码错误导致的一般性问题,可以使用针对性的代码进行处理。

  ① 编译异常:在编译期间会出现的异常,即在IDE环境中出现了红色的波浪线。

  ② 运行异常:在运行期间出现的异常。

处理异常

1、try catch finally

  ① 可以有多个catch语句,try中抛出的异常类对象从上往下去匹配catch中异常类型一旦满足就执行catch中的代码。

  ② 如果用了进到了catch处理了异常,那么后面的代码还是执行的。

  ③ finally不管有没有异常永远都会被执行,即使有return语句。

  ④ 如果在catch中又发生了异常,那么依然还会抛出异常。

笔试题一:

 public class Main {
public static void methodA() {
try {
methodB();
System.out.println("a1");
} catch (Exception ex) {
System.out.println("a2");
} finally {
System.out.println("a3");
}
System.out.println("a4");
} public static void methodB(){
try {
int a= 1/0;
System.out.println("b1");
} catch (Exception ex) {
System.out.println("b2");
} finally {
System.out.println("b3");
}
System.out.println("b4");
}
public static void main(String[] args) {
Main.methodA();
}

输出结果:b2 b3 b4 a1 a3 a4

2、throws

try catch如果捕获到了异常,即使写了thorws,其实是不其作用的,因为catch已经处理了异常,没异常了还往外抛什么啊。

 class Person {
void sleep() throws NullPointerException { }
} class Student extends Person {
void sleep() throws Exception { }
}

编译错误,父类向子类抛出的异常的范围必须相等或越抛越小。

 public static void A() throws ArithmeticException {
B();
}
public static void B() throws Exception {
throw new ArithmeticException();
}
public static void main(String[] args) throws Exception {
Main.A();
}

编译错误,向上抛异常的范围必须相等或越来越大。

  

 

跟着刚哥梳理java知识点——异常(十一)的更多相关文章

  1. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...

  2. 跟着刚哥梳理java知识点——面向对象(八)

    面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...

  3. 跟着刚哥梳理java知识点——注释(二)

    1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...

  4. 跟着刚哥梳理java知识点——IO(十五)

    凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...

  5. 跟着刚哥梳理java知识点——泛型(十三)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  6. 跟着刚哥梳理java知识点——集合(十二)

    Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...

  7. 跟着刚哥梳理java知识点——深入理解String类(九)

    一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...

  8. 跟着刚哥梳理java知识点——变量之间的类型转换(四)

    变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...

  9. 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)

    1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...

随机推荐

  1. 每天一个linux命令(29)--Linux chmod命令

    chmod 命令用于改变Linux 系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中 ...

  2. perl 正则表达式之漫游

    废话不多说了,直奔主题~ 一.简单模式进行匹配 将模式写在一对//中即可,匹配对象是$_ 元字符:圆括号()      进行模式分组 点号   .        能匹配任意一个字符,除换行符(\n)以 ...

  3. 【2017-2-17】VS基本应用及C#基础第一节(定义变量、输入及输出)

    一VS基本应用 (一)新建项目 新建项目可有多种方法例如: 1.  在VS起始页面建立新项目 2.  在集成环境中,通过"文件"/"新建"/"项目&q ...

  4. 新浪微博iOS SDK UIImage+WBSDKResize.o

    Undefined symbols for architecture armv7: "_kCGImageSourceThumbnailMaxPixelSize", referenc ...

  5. ImportError: No module named cv2 解决方法

    ImportError: No module named cv2 解决方法   import cv2时会出现这个问题 解决方法:将openCV安装目录里的python文件夹内的cv2.pyd复制到Py ...

  6. 来谈一谈------JavaScript对象

    1.window常用的属性: ①history ②location 2.history对象的方法: ①back() ②forward() ③go() 3.location对象的属性: ①host() ...

  7. 10分钟精通SharePoint - SharePoint定位

    平台 – "一栋楼房的框架结构" 扩展 – "用户可以根据自己需要随意装修房间"集成 – "插拔式的系统集成能力"业务– "既是全 ...

  8. 用javascript动态改变网页文字大小

    <script>function setFontSize(size){document.getElementById('bottom').style.fontsize=size+'pt'; ...

  9. laravel框架中所用到的依赖注入

    用Laravel开发前前后后有2个月左右了,之前一直写Java,就像找到Java和PHP之前的共同点,用Java的某些原理去理解PHP会发现还是有很多共通之处的.Java的依赖注入已经是一个很常见的概 ...

  10. (转)Uploadify 3.2 参数属性、事件、方法函数详解

    转自http://blog.sina.com.cn/s/blog_5079086b0101fkmh.html Hallelujah博客 一.属性 属性名称 默认值 说明 auto true 设置为tr ...