Think in Java 笔记_Chapter12_1_Exception基础_继承和RuntimeException处理1

java中异常

  1. 异常Exception 是我们可以处理的,可以进行补救,遇到异常就不会执行了?

    1. package cn.seven.shengsiyuan.exception;
      
      /*
       * Time:2015年04月05日12:24:58,清明节
       * Location:501
       *
       */
      
      public class ExceptionDemo1 {
      
      	public static void main(String[] args) {
      		// TODO Auto-generated method stub
      
      		int a = 3;
      		int b = 0;
      
      		int c = a / b;//这句话执行会发生异常,下面的语句便不执行
      
      		System.out.println("------");
      		System.out.println(c);
      
      	}
      
      }
      
      /*Exception in thread "main" java.lang.ArithmeticException: / by zero    at cn.seven.shengsiyuan.exception.ExceptionDemo1.main(ExceptionDemo1.java:17)
      
      */
      
  2. 异常的继承体系-java中的异常都继承自Exception类

    异常分为两大类:
    Checked Exception(非运行时异常 )
           UnChecked Exception(运行时异常 Runtime Exception)

    java.lang
    Class Throwable
    
        java.lang.Object
            java.lang.Throwable
    
        All Implemented Interfaces:
            Serializable
    
        Direct Known Subclasses:
            Error, Exception
    
    java.lang
    Class Exception
    
        java.lang.Object
            java.lang.Throwable
                java.lang.Exception
    
    1. 运行时异常 RuntimeException

          java.lang.Object
              java.lang.Throwable-
                  java.lang.Exception
                      java.lang.RuntimeException
                          javax.management.JMRuntimeException
      
    2. 非运行时异常: 继承了Exception类,但是不继承RuntimeException类的异常
  1. RuntimeException 异常的处理-固定的流程和模式

    1. try{
      }
      catch(Exception e){
      }
    2. package cn.seven.shengsiyuan.exception;
      
      /*
       * Time:2015年04月05日12:24:58,清明节
       * Location:501
       *
       */
      
      public class ExceptionDemo1 {
      
      	public static void main(String[] args) {
      		// TODO Auto-generated method stub
      		int c = 0;
      
      		try{
      		int a = 3;
      		int b = 2;
      
      		 c= a / b;
      		 System.out.println("---hello---");
      		}
      		catch(ArithmeticException e){
      			//将19行产生的异常对象赋值给了e
      			e.printStackTrace();//printStackTrace打印异常的信息,来自Throwable类的方法
      		}
      		finally{
      			System.out.println("finally");
      		}
      
      		System.out.println("------");
      		System.out.println(c);
      
      	}
      
      }
      /*
       * 19行出现异常,产生针对于该异常类的对象 ArithmeticException
       * 当异常发生的时候,进入catch块,由catch进行接管,然后执行catch块中的内容
       * 执行完毕,接下来执行syso语句
       *
       *
       * 现在的重点便是21行-的catch语句的过程
       */
      
    3. 完整的异常处理结构

      try{
      //可能发生异常的语句的代码块
      }
      catch(异常对象){
      //对发生异常之后的处理
      }
      
      finally{
      
      //无论是否发生异常,最终都会被执行的语句,防止某些语句因为发生了异常而无法得到执行
      }
      
      package cn.seven.shengsiyuan.exception;
      
      /*
       * Time:2015年04月05日12:24:58,清明节
       * Location:501
       *
       */
      
      public class ExceptionDemo1 {
      
      	public static void main(String[] args) {
      		// TODO Auto-generated method stub
      		int c = 0;
      
      		try{
      		int a = 3;
      		int b = 0;
      
      		 c= a / b;
      		 System.out.println("---hello---");
      		}
      		catch(ArithmeticException e){
      
      			e.printStackTrace();//printStackTrace打印异常的信息,来自Throwable类的方法
      		}
      		finally{
      			System.out.println("finally");//一定会被执行,无论是否发生异常
      		}
      		//System.out.println(c);?疑问的是为什么这边会仍然输出的是 c=0?是因为c=a/b;语句出现异常,c没有执行赋值语句
      
      	}
      
      }
      
  2. 程序中出现多个异常的话,只会有特定的catch处理特定的异常

时间: 2024-11-03 18:21:49

Think in Java 笔记_Chapter12_1_Exception基础_继承和RuntimeException处理1的相关文章

Think in Java 笔记_Chapter12_1_Exception基础_异常处理3_自定义异常以及抛出多个异常的处理

自定义异常 package cn.seven.shengsiyuan.exception; public class MyException extends Exception{//非运行时异常,因为只是继承了Exception并非RuntimeException public MyException() { // TODO Auto-generated constructor stub } public MyException(String message){ super(message);/

Think in Java 笔记_Chapter12_1_Exception基础_异常处理2

异常处理方式2 throw向上抛出 package cn.seven.shengsiyuan.exception; /* * 2015年04月05日13:05:35 * Location:501 * * 异常处理方法2:抛出异常,由调用该方法的方法 进行处理该异常 */ public class ExceptionThrowDemo { public static void main(String[] args) throws Exception { // TODO Auto-generated

java笔记--多线程基础

多线程技术 在java中实现多线程技术有两种方式: 1.继承Thread类: 2.实现Runnable接口 这两种方法都需要重写run()方法:通常将一个新线程要运行的代码放在run()方法中(这是创建没有返回值线程的方法)由于java只支持单继承,当类已经继承有其他类时,只能选择实现Runnable接口在启动线程时需要使用Thread类的start()方法,而不是直接使用run()方法: 如: public static void function() { for (int i = 0; i

Java 笔记之基础复习

1.& 与 &&的区别 两个都有逻辑与的功能.但是所不同的是,当&两边的表达式不是boolean类型的时候,&具有位与的功能:&&是短路与,当判断到前一个表达式为false的时候,将不会再去计算后面的表达式. 如: int i = 0; System.out.println((1==0)&(0==(i++))); System.out.println(i); 输出是: false 1 但是, int i = 0; System.out.pri

Think in Java 笔记_Chapter20_1_Annocation基础语法

/2015年04月05日12:15:05 <张龙老师>_先看看java里面有什么注解(貌似没说注解能干什么)+++[具体的到后面再看完这几章节再做总结]-编译期间类型检查保护,在实际的源代码级别保存所有的信息,对源代码和字节码有强大的检查和操作能力 @Override-复写或者覆盖父类的方法时候需要加上注解 >>>编程思想中说 把isohi当前的方法覆盖超类中方法,方法签名?? @Deprecated-有些方法虽然仍然有效,但是感觉过时了不想再被别人使用,可以加上这个在调用方

Java笔记之基础语法

/* 1 标识符 1.1. 在程序中所定义的一些名称,由26个英文字母大小写,数字0-9,符号:_$组成 1.2 定义合法的标识符规则: a.数字不可以开头 b.不可以使用关键字 c.Java中严格区分大小写,在起名字时,为了提高阅读性,尽量起有意义的名字. 2 常量与变量 2.1 常量:常量表示不能改变的数值 2.2. Java中的常量分类: a.整数常量.所有整数 b.小数常量.所有小数 c.布尔型常量.较为特有,只有2个数值.true false d.字符常量.将一个数字字母或者符号用单引

学习笔记 Java_静态_继承 2014.7.12

一.静态 1.构造函数: 特点: 1. 函数名和类名同样. 2. 不用定义返回值类型(和void不是一回事,而构造函数是根本不用定义返回值类型). 3. 不能够写return语句. 对象一建立就会调用与之相应的构造函数. 构造函数的作用:能够用于给对象进行初始化.(我们现实生活中的事物,仅仅要一出现就具备的特性. 比方:人一出生就会哭,一初始化就会哭,哭就是这个人的行为) 构造函数的小细节: 1.当一个类中未定义构造函数时,那么系统会默认给该类增加一个空參数的构造函数. 2.当在类中自己定义了构

Java笔记 - 线程基础知识

前言 进程是一个执行中程序的实例,是操作系统进行资源分配和调度的一个独立单元.线程是进程中一个单一的程序控制流,是 CPU 调度和分派的基本单元.进程在执行时拥有独立的内存空间,进程中的线程可以共享进程的内存空间.在 Java 的世界中,进程可以拥有多个并发执行的线程,多线程是实现并发任务的方式. 线程创建和启动 1. 实现 java.lang.Runnable 接口 定义线程执行的任务,需要实现 Runnable 接口并编写 run 方法. public interface Runnable

C++_基础_继承、多态

内容: (1)子类中的拷贝构造和拷贝赋值 (2)多继承和虚继承 (3)多态的初识 (4)虚析构的特性和使用 (5)多态的底层实现 (6)纯虚函数.抽象类的概念 1.子类中的拷贝构造和拷贝赋值 子类中的拷贝构造和拷贝赋值可能也需要显式的指定父类子对象的拷贝构造和拷贝赋值的方式 2.多继承和虚继承2.1 格式: class 子类名 : 继承方式 父类名1,继承方式 父类名2,... { //子类中的属性和行为 }; 如: 员工类 / \销售员工类 管理者类 \ / 销售管理类 叫做:钻石继承 2.2